您好,登錄后才能下訂單哦!
本篇內容介紹了“config和cluster.spec中keys怎么配置”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
這里的描述并不完整,但旨在記錄那些不太容易解釋的key。 我們的godoc參考提供了更詳細的API值列表。 在YAML文件中有描述集群的兩個頂級API值:ClusterSpec定義為kind:YAML,InstanceGroup定義為kind:YAML。
該對象配置我們如何公開API:
dns
將允許直接訪問master實例,并將DNS配置為直接指向master節點。
loadBalancer
將在主節點前配置負載平衡器(ELB),并將DNS配置為指向ELB。
DNS example:
spec: api: dns: {}
當配置LoadBalancer時,可以選擇使用公共ELB或內網(僅限VPC)ELB。 type
字段應該是Public
或 Internal
。
另外,可以通過設置additionalSecurityGroups
將預先創建的其他安全組添加到負載均衡器。
spec: api: loadBalancer: type: Public additionalSecurityGroups: - sg-xxxxxxxx - sg-xxxxxxxx
此外,可以通過設置idleTimeoutSeconds
來增加負載平衡器的空閑超時(idle timeout)。 默認的空閑超時時間為5分鐘,AWS最多允許3600秒(60分鐘)。 有關更多信息,請參閱配置空閑超時。
spec: api: loadBalancer: type: Public idleTimeoutSeconds: 300
雖然kops目前默認不是etcd3,但可以打開v3和TLS身份驗證以便在群集成員之間進行通信。 這些選項可以通過集群配置文件啟用(只在manifests中,沒有命令行選項)。 警告:目前沒有從v2遷移到v3的升級途徑,因此不要嘗試在v2運行群集上啟用此功能,因為它必須在創建群集時完成。 下面的示例代碼片段假設一個由三個主服務器組成的HA群集。
etcdClusters: - etcdMembers: - instanceGroup: master0-az0 name: a-1 - instanceGroup: master1-az0 name: a-2 - instanceGroup: master0-az1 name: b-1 enableEtcdTLS: true name: main version: 3.0.17 - etcdMembers: - instanceGroup: master0-az0 name: a-1 - instanceGroup: master1-az0 name: a-2 - instanceGroup: master0-az1 name: b-1 enableEtcdTLS: true name: events version: 3.0.17
該數組配置能夠訪問kubernetes API的CIDR。 在AWS上,這表現為ELB或主安全組上的入站安全組規則。
例如,使用此鍵可將群集訪問限制為辦公室IP地址范圍。
spec: kubernetesApiAccess: - 12.34.56.78/32
要在現有VPC中共享的子網ID。
現有VPC中您想用作處網的“出口”的資源標識符(ID)。
此功能最初設想為允許重新使用NAT網關。用法如下。 雖然NAT網關是面向“公共”資源的,但在集群規范中,必須在專用私有子網部分中指定它們。 考慮這一點的一種方法是你指定“egress”,這是從這個私有子網的默認路由。
spec: subnets: - cidr: 10.20.64.0/21 name: us-east-1a egress: nat-987654321 type: Private zone: us-east-1a - cidr: 10.20.32.0/21 name: utility-us-east-1a id: subnet-12345 type: Utility zone: us-east-1a
您想要添加到NAT網關的現有EIP的IP。
spec: subnets: - cidr: 10.20.64.0/21 name: us-east-1a publicIP: 203.93.148.142 type: Private zone: us-east-1a
該部分包含kube-apiserver
的配置。
spec: kubeAPIServer: oidcIssuerURL: https://your-oidc-provider.svc.cluster.local oidcClientID: kubernetes oidcUsernameClaim: sub oidcUsernamePrefix: "oidc:" oidcGroupsClaim: user_roles oidcGroupsPrefix: "oidc:" oidcCAFile: /etc/kubernetes/ssl/kc-ca.pem
spec: kubeAPIServer: auditLogPath: /var/log/kube-apiserver-audit.log auditLogMaxAge: 10 auditLogMaxBackups: 1 auditLogMaxSize: 100 auditPolicyFile: /srv/kubernetes/audit.yaml
注意:auditPolicyFile是必需的。 如果該標志被省略,則不記錄事件。
可以使用fileAssets功能在master節點上推送高級審核策略文件。
示例策略文件可以在這里找到
The maximum number of non-mutating requests in flight at a given time. 當服務器超過這個時,它拒絕請求。 零為無限制。 (默認400)
spec: kubeAPIServer: maxRequestsInflight: 1000
這里的鍵和值被翻譯成kube-apiserver中--runtime-config
的值,用逗號分隔。
使用它來啟用alpha功能,例如:
spec: kubeAPIServer: runtimeConfig: batch/v2alpha1: "true" apps/v1alpha1: "true"
將產生參數 --runtime-config=batch/v2alpha1=true,apps/v1alpha1=true
。 請注意,kube-apiserver接受true作為開關狀標志的值。
該值作為kube-apiserver的--service-node-port-range
參數。
spec: kubeAPIServer: serviceNodePortRange: 30000-33000
這部分配置選項是為外部DNS提供的。當前的外部DNS提供商是kops dns-controller,它可以為Kubernetes資源設置DNS記錄。 dns-controller計劃逐步淘汰并替換為external-dns。
spec: externalDns: watchIngress: true
默認的kops行為是false。watchIngress:true使用默認的dns-controller行為來監視入口控制器的變化。 在某些情況下,設置此選項有中斷服務更新的風險。
該部分包含kubelet的配置。
注意:如果相應的配置值可以為空,則可以在spec中將字段設置為空,這樣可以將空字符串作為配置值傳遞給kubelet。
spec: kubelet: resolvConf: ""
將會建立標志--resolv-conf= 。
要按照[自定義metrics doc 我們在kubernetes 中使用自定義指標,我們必須在所有kubelets上將標志--enable-custom-metrics設置為true。 可以在我們的cluster.yml中的kubelet規范中指定它。
spec: kubelet: enableCustomMetrics: true
該部分包含kube-scheduler的配置。
spec: kubeScheduler: usePolicyConfigMap: true
將使kube-scheduler使用命名空間kube-system中configmap的“scheduler-policy”調度程序策略。
請注意,從Kubernetes 1.8.0 kube-scheduler不會自動從configmap重新加載其配置。 需要進入master 實例并手動重啟Docker容器。
該部分包含controller-manager的配置。
spec: kubeControllerManager: horizontalPodAutoscalerSyncPeriod: 15s horizontalPodAutoscalerDownscaleDelay: 5m0s horizontalPodAutoscalerUpscaleDelay: 3m0s
spec: kubelet: featureGates: Accelerators: "true" AllowExtTrafficLocalEndpoints: "false"
將會生成flag --feature-gates=Accelerators=true,AllowExtTrafficLocalEndpoints=false
注:Feature gate ExperimentalCriticalPodAnnotation
默認啟用,因為一些關鍵組件如kube-proxy
依賴它。
spec: kubelet: kubeReserved: cpu: "100m" memory: "100Mi" storage: "1Gi" kubeReservedCgroup: "/kube-reserved" systemReserved: cpu: "100m" memory: "100Mi" storage: "1Gi" systemReservedCgroup: "/system-reserved" enforceNodeAllocatable: "pods,system-reserved,kube-reserved"
將會生成標志: --kube-reserved=cpu=100m,memory=100Mi,storage=1Gi --kube-reserved-cgroup=/kube-reserved --system-reserved=cpu=100mi,memory=100Mi,storage=1Gi --system-reserved-cgroup=/system-reserved --enforce-node-allocatable=pods,system-reserved,kube-reserved
。
在AWS上,這是創建群集的VPC的ID。如果需要從頭開始創建群集,可以不在創建時指定此字段; kops將為你創建一個VPC。
spec: networkID: vpc-abcdefg1
鉤子(hooks)允許在群集中的每個節點安裝Kubernetes之前執行一些操作。 例如,可以安裝Nvidia驅動程序以使用GPU。 這個鉤子可以是Docker鏡像或manifest(systemd單元)的形式。 hooks可以放在集群spec中,這意味著它們將會全局部署,或者可以將它們放入instanceGroup spec中。 注意:當instanceGroup與集群spec上的服務名相同時,instanceGroup優先并忽略群集spec中的定義;即,如果群集中具有單元文件“myunit.service”,并且instanceGroup中有單元文件“myunit.service”,則應用instanceGroup中的文件。
spec: # many sections removed hooks: - before: - some_service.service requires: - docker.service execContainer: image: kopeio/nvidia-bootstrap:1.6 # these are added as -e to the docker environment environment: AWS_REGION: eu-west-1 SOME_VAR: SOME_VALUE # or a raw systemd unit hooks: - name: iptable-restore.service roles: - Node - Master before: - kubelet.service manifest: | [Service] EnvironmentFile=/etc/environment # do some stuff # or disable a systemd unit hooks: - name: update-engine.service disabled: true # or you could wrap this into a full unit hooks: - name: disable-update-engine.service before: - update-engine.service manifest: | Type=oneshot ExecStart=/usr/bin/systemctl stop update-engine.service
安裝Ceph
spec: # many sections removed hooks: - execContainer: command: - sh - -c - chroot /rootfs apt-get update && chroot /rootfs apt-get install -y ceph-common image: busybox
FileAssets是一個alpha功能,允許你將內聯文件內容放入群集和instanceGroup 配置中。 它被設計為alpha,你可以通過kubernetes daemonsets做替代。
spec: fileAssets: - name: iptable-restore # Note if not path is specificied the default path it /srv/kubernetes/assets/<name> path: /var/lib/iptables/rules-save roles: [Master,Node,Bastion] # a list of roles to apply the asset to, zero defaults to all content: | some file content
如果您將aws用作cloudProvider,則可以禁用ELB安全組對Kubernetes Nodes安全組的授權。 換句話說,它不會添加安全組規則。 這可以是有用的,可以避免AWS限制:每個安全組50個規則。
spec: cloudConfig: disableSecurityGroupIngress: true
警告:這僅適用于1.7.0以上的Kubernetes版本。
為避免為每個elb創建一個安全組,可以指定安全組id,該id將分配給LoadBalancer。 它必須是安全組ID,而不是名稱。 api.loadBalancer.additionalSecurityGroups
必須為空,因為Kubernetes將為服務文件中指定的每個端口添加規則。 這可以避免AWS限制:每個區域500個安全組,每個安全組50個規則。
spec: cloudConfig: elbSecurityGroup: sg-123445678
可以覆蓋集群中所有masters 和nodes 的Docker守護進程選項。查看API文檔以獲取完整的選項列表。
如果你有一堆Docker實例(physicsal或vm)正在運行,每當他們中的一個pull主機上不存在的image 時,它將從DockerHub上拉取它。通過緩存這些images,可以將流量保留在本地網絡中,避免出口帶寬使用。此設置不僅有利于集群配置,而且還有利于images 拉取。
@see Cache-Mirror Dockerhub For Speed @see Configure the Docker daemon.
spec: docker: registryMirrors: - https://registry.example.com
可以指定Docker存儲驅動程序以覆蓋默認值。 確保你選擇的驅動程序受操作系統和docker版本的支持。
docker: storage: devicemapper storageOpts: - "dm.thinpooldev=/dev/mapper/thin-pool" - "dm.use_deferred_deletion=true" - "dm.use_deferred_removal=true"
在某些情況下,可能需要使用現有的AWS SSH密鑰,而不是允許kops創建新密鑰。 AWS中提供密鑰的名稱是--ssh-public-key的替代方案。
spec: sshKeyName: myexistingkey
在某些使用情況下,你可能希望使用額外選項來增加目標輸出。目標支持最少的選項,你可以做到這一點。 目前只有terraform的目標支持這一點,但如果其他用例出現,kops最終可能會支持更多。
spec: target: terraform: providerExtraConfig: alias: foo
“config和cluster.spec中keys怎么配置”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。