您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“config和cluster.spec中keys怎么配置”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
這里的描述并不完整,但旨在記錄那些不太容易解釋的key。 我們的godoc參考提供了更詳細(xì)的API值列表。 在YAML文件中有描述集群的兩個(gè)頂級(jí)API值:ClusterSpec定義為kind:YAML,InstanceGroup定義為kind:YAML。
該對(duì)象配置我們?nèi)绾喂_API:
dns
將允許直接訪問master實(shí)例,并將DNS配置為直接指向master節(jié)點(diǎn)。
loadBalancer
將在主節(jié)點(diǎn)前配置負(fù)載平衡器(ELB),并將DNS配置為指向ELB。
DNS example:
spec: api: dns: {}
當(dāng)配置LoadBalancer時(shí),可以選擇使用公共ELB或內(nèi)網(wǎng)(僅限VPC)ELB。 type
字段應(yīng)該是Public
或 Internal
。
另外,可以通過設(shè)置additionalSecurityGroups
將預(yù)先創(chuàng)建的其他安全組添加到負(fù)載均衡器。
spec: api: loadBalancer: type: Public additionalSecurityGroups: - sg-xxxxxxxx - sg-xxxxxxxx
此外,可以通過設(shè)置idleTimeoutSeconds
來增加負(fù)載平衡器的空閑超時(shí)(idle timeout)。 默認(rèn)的空閑超時(shí)時(shí)間為5分鐘,AWS最多允許3600秒(60分鐘)。 有關(guān)更多信息,請(qǐng)參閱配置空閑超時(shí)。
spec: api: loadBalancer: type: Public idleTimeoutSeconds: 300
雖然kops目前默認(rèn)不是etcd3,但可以打開v3和TLS身份驗(yàn)證以便在群集成員之間進(jìn)行通信。 這些選項(xiàng)可以通過集群配置文件啟用(只在manifests中,沒有命令行選項(xiàng))。 警告:目前沒有從v2遷移到v3的升級(jí)途徑,因此不要嘗試在v2運(yùn)行群集上啟用此功能,因?yàn)樗仨氃趧?chuàng)建群集時(shí)完成。 下面的示例代碼片段假設(shè)一個(gè)由三個(gè)主服務(wù)器組成的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
該數(shù)組配置能夠訪問kubernetes API的CIDR。 在AWS上,這表現(xiàn)為ELB或主安全組上的入站安全組規(guī)則。
例如,使用此鍵可將群集訪問限制為辦公室IP地址范圍。
spec: kubernetesApiAccess: - 12.34.56.78/32
要在現(xiàn)有VPC中共享的子網(wǎng)ID。
現(xiàn)有VPC中您想用作處網(wǎng)的“出口”的資源標(biāo)識(shí)符(ID)。
此功能最初設(shè)想為允許重新使用NAT網(wǎng)關(guān)。用法如下。 雖然NAT網(wǎng)關(guān)是面向“公共”資源的,但在集群規(guī)范中,必須在專用私有子網(wǎng)部分中指定它們。 考慮這一點(diǎn)的一種方法是你指定“egress”,這是從這個(gè)私有子網(wǎng)的默認(rèn)路由。
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網(wǎng)關(guān)的現(xiàn)有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是必需的。 如果該標(biāo)志被省略,則不記錄事件。
可以使用fileAssets功能在master節(jié)點(diǎn)上推送高級(jí)審核策略文件。
示例策略文件可以在這里找到
The maximum number of non-mutating requests in flight at a given time. 當(dāng)服務(wù)器超過這個(gè)時(shí),它拒絕請(qǐng)求。 零為無(wú)限制。 (默認(rèn)400)
spec: kubeAPIServer: maxRequestsInflight: 1000
這里的鍵和值被翻譯成kube-apiserver中--runtime-config
的值,用逗號(hào)分隔。
使用它來啟用alpha功能,例如:
spec: kubeAPIServer: runtimeConfig: batch/v2alpha1: "true" apps/v1alpha1: "true"
將產(chǎn)生參數(shù) --runtime-config=batch/v2alpha1=true,apps/v1alpha1=true
。 請(qǐng)注意,kube-apiserver接受true作為開關(guān)狀標(biāo)志的值。
該值作為kube-apiserver的--service-node-port-range
參數(shù)。
spec: kubeAPIServer: serviceNodePortRange: 30000-33000
這部分配置選項(xiàng)是為外部DNS提供的。當(dāng)前的外部DNS提供商是kops dns-controller,它可以為Kubernetes資源設(shè)置DNS記錄。 dns-controller計(jì)劃逐步淘汰并替換為external-dns。
spec: externalDns: watchIngress: true
默認(rèn)的kops行為是false。watchIngress:true使用默認(rèn)的dns-controller行為來監(jiān)視入口控制器的變化。 在某些情況下,設(shè)置此選項(xiàng)有中斷服務(wù)更新的風(fēng)險(xiǎn)。
該部分包含kubelet的配置。
注意:如果相應(yīng)的配置值可以為空,則可以在spec中將字段設(shè)置為空,這樣可以將空字符串作為配置值傳遞給kubelet。
spec: kubelet: resolvConf: ""
將會(huì)建立標(biāo)志--resolv-conf= 。
要按照[自定義metrics doc 我們?cè)趉ubernetes 中使用自定義指標(biāo),我們必須在所有kubelets上將標(biāo)志--enable-custom-metrics設(shè)置為true。 可以在我們的cluster.yml中的kubelet規(guī)范中指定它。
spec: kubelet: enableCustomMetrics: true
該部分包含kube-scheduler的配置。
spec: kubeScheduler: usePolicyConfigMap: true
將使kube-scheduler使用命名空間kube-system中configmap的“scheduler-policy”調(diào)度程序策略。
請(qǐng)注意,從Kubernetes 1.8.0 kube-scheduler不會(huì)自動(dòng)從configmap重新加載其配置。 需要進(jìn)入master 實(shí)例并手動(dòng)重啟Docker容器。
該部分包含controller-manager的配置。
spec: kubeControllerManager: horizontalPodAutoscalerSyncPeriod: 15s horizontalPodAutoscalerDownscaleDelay: 5m0s horizontalPodAutoscalerUpscaleDelay: 3m0s
spec: kubelet: featureGates: Accelerators: "true" AllowExtTrafficLocalEndpoints: "false"
將會(huì)生成flag --feature-gates=Accelerators=true,AllowExtTrafficLocalEndpoints=false
注:Feature gate ExperimentalCriticalPodAnnotation
默認(rèn)啟用,因?yàn)橐恍╆P(guān)鍵組件如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"
將會(huì)生成標(biāo)志: --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上,這是創(chuàng)建群集的VPC的ID。如果需要從頭開始創(chuàng)建群集,可以不在創(chuàng)建時(shí)指定此字段; kops將為你創(chuàng)建一個(gè)VPC。
spec: networkID: vpc-abcdefg1
鉤子(hooks)允許在群集中的每個(gè)節(jié)點(diǎn)安裝Kubernetes之前執(zhí)行一些操作。 例如,可以安裝Nvidia驅(qū)動(dòng)程序以使用GPU。 這個(gè)鉤子可以是Docker鏡像或manifest(systemd單元)的形式。 hooks可以放在集群spec中,這意味著它們將會(huì)全局部署,或者可以將它們放入instanceGroup spec中。 注意:當(dāng)instanceGroup與集群spec上的服務(wù)名相同時(shí),instanceGroup優(yōu)先并忽略群集spec中的定義;即,如果群集中具有單元文件“myunit.service”,并且instanceGroup中有單元文件“myunit.service”,則應(yīng)用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是一個(gè)alpha功能,允許你將內(nèi)聯(lián)文件內(nèi)容放入群集和instanceGroup 配置中。 它被設(shè)計(jì)為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安全組對(duì)Kubernetes Nodes安全組的授權(quán)。 換句話說,它不會(huì)添加安全組規(guī)則。 這可以是有用的,可以避免AWS限制:每個(gè)安全組50個(gè)規(guī)則。
spec: cloudConfig: disableSecurityGroupIngress: true
警告:這僅適用于1.7.0以上的Kubernetes版本。
為避免為每個(gè)elb創(chuàng)建一個(gè)安全組,可以指定安全組id,該id將分配給LoadBalancer。 它必須是安全組ID,而不是名稱。 api.loadBalancer.additionalSecurityGroups
必須為空,因?yàn)镵ubernetes將為服務(wù)文件中指定的每個(gè)端口添加規(guī)則。 這可以避免AWS限制:每個(gè)區(qū)域500個(gè)安全組,每個(gè)安全組50個(gè)規(guī)則。
spec: cloudConfig: elbSecurityGroup: sg-123445678
可以覆蓋集群中所有masters 和nodes 的Docker守護(hù)進(jìn)程選項(xiàng)。查看API文檔以獲取完整的選項(xiàng)列表。
如果你有一堆Docker實(shí)例(physicsal或vm)正在運(yùn)行,每當(dāng)他們中的一個(gè)pull主機(jī)上不存在的image 時(shí),它將從DockerHub上拉取它。通過緩存這些images,可以將流量保留在本地網(wǎng)絡(luò)中,避免出口帶寬使用。此設(shè)置不僅有利于集群配置,而且還有利于images 拉取。
@see Cache-Mirror Dockerhub For Speed @see Configure the Docker daemon.
spec: docker: registryMirrors: - https://registry.example.com
可以指定Docker存儲(chǔ)驅(qū)動(dòng)程序以覆蓋默認(rèn)值。 確保你選擇的驅(qū)動(dòng)程序受操作系統(tǒng)和docker版本的支持。
docker: storage: devicemapper storageOpts: - "dm.thinpooldev=/dev/mapper/thin-pool" - "dm.use_deferred_deletion=true" - "dm.use_deferred_removal=true"
在某些情況下,可能需要使用現(xiàn)有的AWS SSH密鑰,而不是允許kops創(chuàng)建新密鑰。 AWS中提供密鑰的名稱是--ssh-public-key的替代方案。
spec: sshKeyName: myexistingkey
在某些使用情況下,你可能希望使用額外選項(xiàng)來增加目標(biāo)輸出。目標(biāo)支持最少的選項(xiàng),你可以做到這一點(diǎn)。 目前只有terraform的目標(biāo)支持這一點(diǎn),但如果其他用例出現(xiàn),kops最終可能會(huì)支持更多。
spec: target: terraform: providerExtraConfig: alias: foo
“config和cluster.spec中keys怎么配置”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。