溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

config和cluster.spec中keys怎么配置

發(fā)布時(shí)間:2021-12-23 17:42:26 來源:億速云 閱讀:140 作者:iii 欄目:云計(jì)算

本篇內(nèi)容介紹了“config和cluster.spec中keys怎么配置”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

kops中config和cluster.spec中keys 的描述

這里的描述并不完整,但旨在記錄那些不太容易解釋的key。 我們的godoc參考提供了更詳細(xì)的API值列表。 在YAML文件中有描述集群的兩個(gè)頂級(jí)API值:ClusterSpec定義為kind:YAML,InstanceGroup定義為kind:YAML。

spec

api

該對(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)該是PublicInternal。

另外,可以通過設(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

etcdClusters v3 & tls

雖然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

kubernetesApiAccess

該數(shù)組配置能夠訪問kubernetes API的CIDR。 在AWS上,這表現(xiàn)為ELB或主安全組上的入站安全組規(guī)則。

例如,使用此鍵可將群集訪問限制為辦公室IP地址范圍。

spec:
  kubernetesApiAccess:
    - 12.34.56.78/32

cluster.spec Subnet Keys

id

要在現(xiàn)有VPC中共享的子網(wǎng)ID。

egress

現(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
publicIP

您想要添加到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

kubeAPIServer

該部分包含kube-apiserver的配置。

用于Open ID Connect令牌的oidc標(biāo)志
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
audit logging
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í)審核策略文件。

示例策略文件可以在這里找到

Max Requests Inflight

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
runtimeConfig

這里的鍵和值被翻譯成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)志的值。

serviceNodePortRange

該值作為kube-apiserver的--service-node-port-range 參數(shù)。

spec:
  kubeAPIServer:
    serviceNodePortRange: 30000-33000

externalDns

這部分配置選項(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

該部分包含kubelet的配置。 

注意:如果相應(yīng)的配置值可以為空,則可以在spec中將字段設(shè)置為空,這樣可以將空字符串作為配置值傳遞給kubelet。

spec:
  kubelet:
    resolvConf: ""

將會(huì)建立標(biāo)志--resolv-conf= 。

啟用自定義metrics支持

要按照[自定義metrics doc 我們?cè)趉ubernetes 中使用自定義指標(biāo),我們必須在所有kubelets上將標(biāo)志--enable-custom-metrics設(shè)置為true。 可以在我們的cluster.yml中的kubelet規(guī)范中指定它。

spec:
  kubelet:
    enableCustomMetrics: true

kubeScheduler

該部分包含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容器。

kubeControllerManager

該部分包含controller-manager的配置。

spec:
  kubeControllerManager:
    horizontalPodAutoscalerSyncPeriod: 15s
    horizontalPodAutoscalerDownscaleDelay: 5m0s
    horizontalPodAutoscalerUpscaleDelay: 3m0s
Feature Gates
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 依賴它。

計(jì)算資源保留
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

networkID

在AWS上,這是創(chuàng)建群集的VPC的ID。如果需要從頭開始創(chuàng)建群集,可以不在創(chuàng)建時(shí)指定此字段; kops將為你創(chuàng)建一個(gè)VPC。

spec:
  networkID: vpc-abcdefg1

hooks

鉤子(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

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

cloudConfig

disableSecurityGroupIngress

如果您將aws用作cloudProvider,則可以禁用ELB安全組對(duì)Kubernetes Nodes安全組的授權(quán)。 換句話說,它不會(huì)添加安全組規(guī)則。 這可以是有用的,可以避免AWS限制:每個(gè)安全組50個(gè)規(guī)則。

spec:
  cloudConfig:
    disableSecurityGroupIngress: true
elbSecurityGroup

警告:這僅適用于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

docker

可以覆蓋集群中所有masters 和nodes 的Docker守護(hù)進(jìn)程選項(xiàng)。查看API文檔以獲取完整的選項(xiàng)列表。

registryMirrors

如果你有一堆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
storage

可以指定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"

sshKeyName

在某些情況下,可能需要使用現(xiàn)有的AWS SSH密鑰,而不是允許kops創(chuàng)建新密鑰。 AWS中提供密鑰的名稱是--ssh-public-key的替代方案。

spec:
  sshKeyName: myexistingkey

target

在某些使用情況下,你可能希望使用額外選項(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í)用文章!

向AI問一下細(xì)節(jié)

免責(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)容。

AI