kubeadm 配置 (v1beta4)

概述

Package v1beta4 定義了 kubeadm 配置檔案格式的 v1beta4 版本。此版本透過修復一些小問題和新增一些新欄位,改進了 v1beta3 格式。

v1beta3 以來更改列表

v1.33

  • UpgradeConfiguration.plan 新增 EtcdUpgrade 欄位,可用於控制是否顯示 etcd 升級計劃。

v1.31

  • ClusterConfiguration 下支援控制平面元件中的自定義環境變數。使用 apiServer.extraEnvscontrollerManager.extraEnvsscheduler.extraEnvsetcd.local.extraEnvs
  • v1beta4 現在支援 ResetConfiguration API 型別。使用者可以透過向 kubeadm reset 傳遞 --config 檔案來重置節點。
  • 現在可以在 InitConfigurationJoinConfigurationB 中配置試執行模式。
  • 將現有的字串/字串額外引數對映替換為支援重複項的結構化額外引數。此更改適用於 ClusterConfiguration - apiServer.extraArgscontrollerManager.extraArgsscheduler.extraArgsetcd.local.extraArgs。也適用於 nodeRegistration.kubeletExtraArgs
  • 新增 ClusterConfiguration.encryptionAlgorithm,可用於設定此叢集金鑰和證書使用的非對稱加密演算法。可以是 "RSA-2048"(預設)、"RSA-3072""RSA-4096""ECDSA-P256" 之一。
  • 新增 ClusterConfiguration.dns.disabledClusterConfiguration.proxy.disabled,可用於在叢集初始化期間停用 CoreDNS 和 kube-proxy 外掛。跳過與叢集建立相關的外掛階段會將相同的欄位設定為 true
  • InitConfigurationJoinConfiguration 中新增 nodeRegistration.imagePullSerial 欄位,可用於控制 kubeadm 是序列還是並行拉取映象。
  • 現在 v1beta4 支援 UpgradeConfiguration kubeadm API,透過向 kubeadm upgrade 子命令傳遞 --config。對於 kubeletkube-proxyInitConfigurationClusterConfiguration 的元件配置用法已被棄用,在向 upgrade 子命令傳遞 --config 時將被忽略。
  • InitConfigurationJoinConfigurationResetConfigurationUpgradeConfiguration 新增 Timeouts 結構,可用於配置各種超時。ClusterConfiguration.timeoutForControlPlane 欄位被 Timeouts.controlPlaneComponentHealthCheck 替換。JoinConfiguration.discovery.timeouttimeouts.Discovery 替換。
  • ClusterConfiguration 新增 certificateValidityPeriodcaCertificateValidityPeriod 欄位。這些欄位可用於控制 kubeadm 在 initjoinupgradecerts 等子命令期間生成的證書的有效期。預設值繼續為非 CA 證書為 1 年,CA 證書為 10 年。只有非 CA 證書可以繼續透過 kubeadm certs renew 更新。

從舊的 kubeadm 配置版本遷移

  • kubeadm v1.15.x 及更高版本可用於從 v1beta1 遷移到 v1beta2。
  • kubeadm v1.22.x 及更高版本不再支援 v1beta1 及更早的 API,但可用於將 v1beta2 遷移到 v1beta3。
  • kubeadm v1.27.x 及更高版本不再支援 v1beta2 及更早的 API。
  • kubeadm v1.31.x 及更高版本可用於從 v1beta3 遷移到 v1beta4。

基礎知識

配置 kubeadm 的首選方式是透過 --config 選項傳遞 YAML 配置檔案。kubeadm 配置檔案中定義的一些配置選項也可作為命令列標誌使用,但只有最常見/簡單的用例才支援這種方式。

kubeadm 配置檔案可以包含多個配置型別,用三個連字元 (---) 分隔。

kubeadm 支援以下配置型別

apiVersion: kubeadm.k8s.io/v1beta4
kind: InitConfiguration

apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration

apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration

apiVersion: kubeadm.k8s.io/v1beta4
kind: JoinConfiguration

apiVersion: kubeadm.k8s.io/v1beta4
kind: ResetConfiguration

apiVersion: kubeadm.k8s.io/v1beta4
kind: UpgradeConfiguration

要列印 initjoin 操作的預設值,請使用以下命令

kubeadm config print init-defaults
kubeadm config print join-defaults
kubeadm config print reset-defaults
kubeadm config print upgrade-defaults

需要包含在配置檔案中的配置型別列表取決於您執行的操作(initjoin)以及您將使用的配置選項(預設值或高階自定義)。

如果某些配置型別未提供,或僅部分提供,kubeadm 將使用預設值;kubeadm 提供的預設值還包括強制執行元件之間的一致性(例如,控制器管理器上的 --cluster-cidr 標誌和 kube-proxy 上的 clusterCIDR)。

使用者始終可以覆蓋預設值,唯一例外的是一小部分與安全性相關的設定(例如,強制 API 伺服器的 authorization-mode 為 Node 和 RBAC)。

如果使用者提供了一個與您正在執行的操作不符的配置型別,kubeadm 將忽略這些型別併發出警告。

Kubeadm init 配置型別

當使用 --config 選項執行 kubeadm init 時,可以使用以下配置型別:InitConfiguration、ClusterConfiguration、KubeProxyConfiguration、KubeletConfiguration,但 InitConfiguration 和 ClusterConfiguration 之間只需要其中一種。

apiVersion: kubeadm.k8s.io/v1beta4
kind: InitConfiguration
bootstrapTokens:
...
nodeRegistration:
...

InitConfiguration 型別應用於配置執行時設定,對於 kubeadm init 來說,這些設定包括引導令牌的配置以及 kubeadm 執行所在的節點的所有特定設定,包括:

  • NodeRegistration,包含與將新節點註冊到叢集相關的欄位;用於自定義節點名稱、要使用的 CRI 套接字或僅適用於此節點的任何其他設定(例如,節點 IP)。

  • LocalAPIEndpoint,代表將在此節點上部署的 API 伺服器例項的端點;例如,用於自定義 API 伺服器的廣告地址。

apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
networking:
  ...
etcd:
  ...
apiServer:
  extraArgs:
    ...
  extraVolumes:
    ...
...

ClusterConfiguration 型別應用於配置叢集範圍的設定,包括:

  • networking,包含叢集網路拓撲的配置;例如,用於自定義 Pod 子網或服務子網。

  • etcd:例如,用於自定義本地 etcd 或配置 API 伺服器使用外部 etcd 叢集。

  • kube-apiserver、kube-scheduler、kube-controller-manager 的配置;用於透過新增自定義設定或覆蓋 kubeadm 預設設定來定製控制平面元件。

apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
...

KubeProxyConfiguration 型別應用於更改傳遞給叢集中部署的 kube-proxy 例項的配置。如果未提供此物件或僅部分提供,kubeadm 將應用預設值。

有關 kube-proxy 的官方文件,請參閱 https://kubernetes.club.tw/docs/reference/command-line-tools-reference/kube-proxy/ 或 https://pkg.go.dev/k8s.io/kube-proxy/config/v1alpha1#KubeProxyConfiguration。

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
...

KubeletConfiguration 型別應用於更改將傳遞給叢集中部署的所有 kubelet 例項的配置。如果未提供此物件或僅部分提供,kubeadm 將應用預設值。

有關 kubelet 的官方文件,請參閱 https://kubernetes.club.tw/docs/reference/command-line-tools-reference/kubelet/ 或 https://pkg.go.dev/k8s.io/kubelet/config/v1beta1#KubeletConfiguration。

以下是一個包含多個配置型別用於 kubeadm init 執行的單個 YAML 檔案的完整填充示例。

apiVersion: kubeadm.k8s.io/v1beta4
kind: InitConfiguration
bootstrapTokens:
  - token: "9a08jv.c0izixklcxtmnze7"
    description: "kubeadm bootstrap token"
    ttl: "24h"
  - token: "783bde.3f89s0fje9f38fhf"
    description: "another bootstrap token"
    usages:
  - authentication
  - signing
    groups:
  - system:bootstrappers:kubeadm:default-node-token

nodeRegistration:
  name: "ec2-10-100-0-1"
  criSocket: "unix:///var/run/containerd/containerd.sock"
  taints:
    - key: "kubeadmNode"
      value: "someValue"
      effect: "NoSchedule"
  kubeletExtraArgs:
    - name: v
      value: "5"
  ignorePreflightErrors:
    - IsPrivilegedUser
  imagePullPolicy: "IfNotPresent"
  imagePullSerial: true

localAPIEndpoint:
  advertiseAddress: "10.100.0.1"
  bindPort: 6443
certificateKey: "e6a2eb8581237ab72a4f494f30285ec12a9694d750b9785706a83bfcbbbd2204"
skipPhases:
  - preflight
timeouts:
  controlPlaneComponentHealthCheck: "60s"
  kubenetesAPICall: "40s"
---
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
etcd:

  # one of local or external
  local:
    imageRepository: "registry.k8s.io"
    imageTag: "3.2.24"
    dataDir: "/var/lib/etcd"
    extraArgs:
      - name: listen-client-urls
        value: http://10.100.0.1:2379
    extraEnvs:
      - name: SOME_VAR
        value: SOME_VALUE
    serverCertSANs:
      - ec2-10-100-0-1.compute-1.amazonaws.com
    peerCertSANs:
      - 10.100.0.1
  # external:
  #   endpoints:
  #     - 10.100.0.1:2379
  #     - 10.100.0.2:2379
  #   caFile: "/etcd/kubernetes/pki/etcd/etcd-ca.crt"
  #   certFile: "/etcd/kubernetes/pki/etcd/etcd.crt"
  #   keyFile: "/etcd/kubernetes/pki/etcd/etcd.key"

networking:
  serviceSubnet: "10.96.0.0/16"
  podSubnet: "10.244.0.0/24"
  dnsDomain: "cluster.local"
kubernetesVersion: "v1.21.0"
controlPlaneEndpoint: "10.100.0.1:6443"
apiServer:
  extraArgs:
    - name: authorization-mode
      value: Node,RBAC
  extraEnvs:
    - name: SOME_VAR
      value: SOME_VALUE
  extraVolumes:
    - name: "some-volume"
      hostPath: "/etc/some-path"
      mountPath: "/etc/some-pod-path"
      readOnly: false
      pathType: File
  certSANs:
    - "10.100.1.1"
    - "ec2-10-100-0-1.compute-1.amazonaws.com"

controllerManager:
  extraArgs:
    - name: node-cidr-mask-size
      value: "20"
  extraVolumes:
    - name: "some-volume"
      hostPath: "/etc/some-path"
      mountPath: "/etc/some-pod-path"
      readOnly: false
      pathType: File

scheduler:
  extraArgs:
    - name: address
      value: 10.100.0.1
  extraVolumes:
    - name: "some-volume"
      hostPath: "/etc/some-path"
      mountPath: "/etc/some-pod-path"
      readOnly: false
      pathType: File

certificatesDir: "/etc/kubernetes/pki"
imageRepository: "registry.k8s.io"
clusterName: "example-cluster"
encryptionAlgorithm: ECDSA-P256
dns:
  disabled: true  # disable CoreDNS
proxy:
  disabled: true   # disable kube-proxy

---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
# kubelet specific options here
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
# kube-proxy specific options here

Kubeadm join 配置型別

執行 kubeadm join 並使用 --config 選項時,應提供 JoinConfiguration 型別。

apiVersion: kubeadm.k8s.io/v1beta4
kind: JoinConfiguration
discovery:
  bootstrapToken:
    apiServerEndpoint: some-address:6443
    token: abcdef.0123456789abcdef
    unsafeSkipCAVerification: true
  tlsBootstrapToken: abcdef.0123456789abcdef

JoinConfiguration 型別應用於配置執行時設定,對於 kubeadm join 來說,這些設定是用於訪問叢集資訊的發現方法以及 kubeadm 執行所在的節點的所有特定設定,包括:

  • nodeRegistration,包含與將新節點註冊到叢集相關的欄位;用於自定義節點名稱、要使用的 CRI 套接字或僅適用於此節點的任何其他設定(例如,節點 IP)。

  • apiEndpoint,代表將在該節點上部署的 API 伺服器例項的端點。

Kubeadm reset 配置型別

當使用 --config 選項執行 kubeadm reset 時,應提供 ResetConfiguration 型別。

apiVersion: kubeadm.k8s.io/v1beta4
kind: ResetConfiguration
...

Kubeadm upgrade 配置型別

當使用 --config 選項執行 kubeadm upgrade 時,應提供 UpgradeConfiguration 型別。

apiVersion: kubeadm.k8s.io/v1beta4
kind: UpgradeConfiguration
apply:
  ...
diff:
  ...
node:
  ...
plan:
  ...

UpgradeConfiguration 結構包含一些子結構,這些子結構僅適用於 kubeadm upgrade 的不同子命令。例如,apply 子結構將與 kubeadm upgrade apply 子命令一起使用,並且在這種情況下會忽略所有其他子結構。

資源型別

BootstrapToken

出現在

BootstrapToken 描述了一個引導令牌,儲存在叢集中作為 Secret

欄位描述
token [必填]
BootstrapTokenString

token 用於在節點和控制平面之間建立雙向信任。用於加入叢集的節點。

description
string

description 設定一條人類可讀的訊息,說明此令牌為何存在以及它的用途,以便其他管理員可以瞭解其目的。

ttl
meta/v1.Duration

ttl 定義了此令牌的生存時間。預設為 24hexpiresttl 是互斥的。

expires
meta/v1.Time

expires 指定了此令牌過期的時間戳。預設為根據 ttl 在執行時動態設定。expiresttl 是互斥的。

usages
[]string

usages 描述了此令牌的使用方式。預設可以用於建立雙向信任,但這可以在此處更改。

groups
[]string

groups 指定了此令牌在用於身份驗證時將作為哪些額外組進行身份驗證

BootstrapTokenString

出現在

BootstrapTokenString 是一個格式為 abcdef.abcdef0123456789 的令牌,用於從加入節點的角度驗證 API 伺服器的實用性,以及作為“kubeadm join”引導階段節點的身份驗證方法。此令牌是且應該是短暫的。

欄位描述
- [必填]
string
未提供描述。
- [必填]
string
未提供描述。

ClusterConfiguration

ClusterConfiguration 包含 kubeadm 叢集的叢集範圍配置。

欄位描述
apiVersion
string
kubeadm.k8s.io/v1beta4
kind
string
ClusterConfiguration
etcd
Etcd

etcd 包含 etcd 的配置。

networking
網路

networking 包含叢集網路拓撲的配置。

kubernetesVersion
string

kubernetesVersion 是控制平面的目標版本。

controlPlaneEndpoint
string

controlPlaneEndpoint 設定控制平面的穩定 IP 地址或 DNS 名稱;它可以是一個有效的 IP 地址或一個 RFC-1123 DNS 子域,兩者都可選擇性地帶有 TCP 埠。如果未指定 controlPlaneEndpoint,則使用 advertiseAddress + bindPort;如果指定了 controlPlaneEndpoint 但沒有 TCP 埠,則使用 bindPort。可能的用法是:

  • 在一個擁有多個控制平面例項的叢集中,此欄位應分配給控制平面例項前方的外部負載均衡器的地址。
  • 在強制節點回收的環境中,controlPlaneEndpoint 可用於為控制平面分配穩定的 DNS。
apiServer
APIServer

apiServer 包含 API 伺服器的額外設定。

controllerManager
ControlPlaneComponent

controllerManager 包含控制器管理器的額外設定。

scheduler
ControlPlaneComponent

scheduler 包含排程器的額外設定。

dns
DNS

dns 定義了叢集中安裝的 DNS 外掛的選項。

proxy [必填]
Proxy

proxy 定義了叢集中安裝的代理外掛的選項。

certificatesDir
string

certificatesDir 指定了儲存或查詢所有必需證書的位置。

imageRepository
string

imageRepository 設定拉取映象的容器登錄檔。如果為空,則預設使用 registry.k8s.io。如果 Kubernetes 版本是 CI 構建(Kubernetes 版本以 ci/ 開頭),則 gcr.io/k8s-staging-ci-images 將預設用於控制平面元件和 kube-proxy,而 registry.k8s.io 將用於所有其他映象。

featureGates
map[string]bool

featureGates 包含使用者啟用的功能門。

clusterName
string

叢集名稱。

encryptionAlgorithm
EncryptionAlgorithmType

encryptionAlgorithm 包含用於金鑰和證書的非對稱加密演算法型別。可以是 "RSA-2048"(預設)、"RSA-3072""RSA-4096""ECDSA-P256" 之一。

certificateValidityPeriod
meta/v1.Duration

certificateValidityPeriod 指定了 kubeadm 生成的非 CA 證書的有效期。預設值:8760h(365 天 * 24 小時 = 1 年)

caCertificateValidityPeriod
meta/v1.Duration

caCertificateValidityPeriod 指定了 kubeadm 生成的 CA 證書的有效期。預設值:87600h(365 天 * 24 小時 * 10 = 10 年)

InitConfiguration

InitConfiguration 包含一組僅在“kubeadm init”期間使用的執行時資訊。kubeadm init 專用資訊。這些欄位僅在首次執行 kubeadm init 時使用。此後,欄位中的資訊**不會**上傳到 kubeadm-config ConfigMap,因為 kubeadm upgrade 等工具會使用該 ConfigMap。這些欄位必須是可選的。

欄位描述
apiVersion
string
kubeadm.k8s.io/v1beta4
kind
string
InitConfiguration
bootstrapTokens
[]BootstrapToken

bootstrapTokenskubeadm init 時生效,描述了一組要建立的引導令牌。由於其敏感性,此資訊**不會**上傳到 kubeadm 叢集 ConfigMap。

dryRun [必填]
bool

dryRun 告知是否啟用了試執行模式,在試執行模式下不進行任何更改,僅輸出將要執行的操作。

nodeRegistration
NodeRegistrationOptions

nodeRegistration 包含與將新控制平面節點註冊到叢集相關的欄位。

localAPIEndpoint
APIEndpoint

localAPIEndpoint 代表部署在此控制平面節點上的 API 伺服器例項的端點。在 HA 設定中,這與 ClusterConfiguration.controlPlaneEndpoint 不同,因為 controlPlaneEndpoint 是叢集的全域性端點,然後將請求負載均衡到每個單獨的 API 伺服器。此配置物件允許您自定義本地 API 伺服器廣告的 IP/DNS 名稱和埠。預設情況下,kubeadm 會嘗試自動檢測預設介面的 IP 並使用它,但如果該過程失敗,您可以在此處設定所需的值。

certificateKey
string

certificateKeyuploadcerts init 階段將證書和金鑰上傳到叢集中的 Secret 之前,用於加密它們的金鑰。證書金鑰是一個十六進位制編碼的字串,是 32 位元組大小的 AES 金鑰。

skipPhases
[]string

skipPhases 是在命令執行期間要跳過的階段列表。可以透過 kubeadm init --help 命令獲取階段列表。--skip-phases 標誌的優先順序高於此欄位。

patches
Patches

patches 包含與在 kubeadm init 期間應用到 kubeadm 部署的元件的補丁相關的選項。

timeouts
Timeouts

timeouts 包含適用於 kubeadm 命令的各種超時。

JoinConfiguration

JoinConfiguration 包含描述特定節點的元素。

欄位描述
apiVersion
string
kubeadm.k8s.io/v1beta4
kind
string
JoinConfiguration
dryRun
bool

dryRun 告知是否啟用了試執行模式,如果已設定,則不應用任何更改,僅輸出將要執行的操作。

nodeRegistration
NodeRegistrationOptions

nodeRegistration 包含與將新控制平面節點註冊到叢集相關的欄位

caCertPath
string

caCertPath 是用於保護節點和控制平面之間通訊的 SSL 證書頒發機構的路徑。預設為 "/etc/kubernetes/pki/ca.crt"。

discovery [必填]
發現

discovery 指定了 kubelet 在 TLS 引導過程中使用的選項。

controlPlane
JoinControlPlane

controlPlane 定義了將在加入節點上部署的附加控制平面例項。如果為 nil,則不會部署附加的控制平面例項。

skipPhases
[]string

skipPhases 是在命令執行期間要跳過的階段列表。可以透過 kubeadm join --help 命令獲取階段列表。--skip-phases 標誌的優先順序高於此欄位。

patches
Patches

patches 包含與在 kubeadm join 期間應用到 kubeadm 部署的元件的補丁相關的選項。

timeouts
Timeouts

timeouts 包含適用於 kubeadm 命令的各種超時。

ResetConfiguration

ResetConfiguration 包含一組僅在“kubeadm reset”期間使用的執行時資訊。

欄位描述
apiVersion
string
kubeadm.k8s.io/v1beta4
kind
string
ResetConfiguration
cleanupTmpDir
bool

cleanupTmpDir 指定在重置過程中是否應清理 "/etc/kubernetes/tmp" 目錄。

certificatesDir
string

certificatesDir 指定證書儲存目錄。如果指定,將在重置過程中進行清理。

criSocket
string

criSocket 用於檢索容器執行時資訊,並用於移除容器。如果 criSocket 未透過標誌或配置檔案指定,kubeadm 將嘗試檢測一個有效的 CRI 套接字。

dryRun
bool

dryRun 告知是否啟用了試執行模式,如果已設定,則不應用任何更改,僅輸出將要執行的操作。

force
bool

force 標誌指示 kubeadm 在不提示確認的情況下重置節點。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供了一系列要在重置過程中忽略的預檢錯誤,例如 IsPrivilegedUser,Swap。值 all 會忽略所有檢查的錯誤。

skipPhases
[]string

skipPhases 是在命令執行期間要跳過的階段列表。可以透過 kubeadm reset phase --help 命令獲取階段列表。

unmountFlags
[]string

unmountFlags 是 kubeadm 在“reset”期間掛載目錄時可以使用的一組 unmount2() 系統呼叫標誌。此標誌可以是:"MNT_FORCE""MNT_DETACH""MNT_EXPIRE""UMOUNT_NOFOLLOW"。預設此列表為空。

timeouts
Timeouts

Timeouts 包含適用於 kubeadm 命令的各種超時。

UpgradeConfiguration

UpgradeConfiguration 包含一組僅適用於 kubeadm upgrade 子命令的選項。

欄位描述
apiVersion
string
kubeadm.k8s.io/v1beta4
kind
string
UpgradeConfiguration
apply
UpgradeApplyConfiguration

apply 包含一組僅適用於 kubeadm upgrade apply 命令的選項。

diff
UpgradeDiffConfiguration

diff 包含一組僅適用於 kubeadm upgrade diff 命令的選項。

node
UpgradeNodeConfiguration

node 包含一組僅適用於 kubeadm upgrade node 命令的選項。

plan
UpgradePlanConfiguration

plan 包含一組僅適用於 kubeadm upgrade plan 命令的選項。

timeouts
Timeouts

timeouts 包含適用於 kubeadm 命令的各種超時。

APIEndpoint

出現在

APIEndpoint 結構包含節點上部署的 API 伺服器例項的元素。

欄位描述
advertiseAddress
string

advertiseAddress 設定 API 伺服器要廣告的 IP 地址。

bindPort
int32

bindPort 設定 API 伺服器繫結的安全埠。預設為 6443。

APIServer

出現在

APIServer 包含叢集中 API 伺服器部署所需的設定

欄位描述
ControlPlaneComponent [必填]
ControlPlaneComponent
(ControlPlaneComponent 的成員已嵌入到此型別中。) 未提供描述。
certSANs
[]string

certSANs 為 API 伺服器簽名證書設定額外的備用名稱 (SAN)。

Arg

出現在

Arg 表示一個帶有名稱和值的引數。

欄位描述
name [必填]
string

引數名稱。

value [必填]
string

引數值。

BootstrapTokenDiscovery

出現在

BootstrapTokenDiscovery 用於設定基於引導令牌的發現選項。

欄位描述
token [必填]
string

token 是用於驗證從控制平面獲取的叢集資訊的令牌。

apiServerEndpoint
string

apiServerEndpoint 是 API 伺服器的 IP 或域名,將從中獲取資訊。

caCertHashes
[]string

caCertHashes 指定了一組在使用令牌驗證發現時要驗證的公鑰圖釘。發現過程中找到的根 CA 必須與其中一個值匹配。指定一個空集會停用根 CA 圖釘,這可能不安全。每個雜湊都指定為 <type>:<value>,其中唯一當前支援的型別是 "sha256"。這是一個 DER 編碼的 ASN.1 中主題公鑰資訊 (SPKI) 物件的十六進位制編碼的 SHA-256 雜湊。這些雜湊可以透過例如 OpenSSL 計算。

unsafeSkipCAVerification
bool

unsafeSkipCAVerification 允許在沒有 CA 驗證(透過 caCertHashes)的情況下進行令牌驗證發現。這可能會削弱 kubeadm 的安全性,因為其他節點可以冒充控制平面。

ControlPlaneComponent

出現在

ControlPlaneComponent 包含叢集控制平面元件的通用設定

欄位描述
extraArgs
[]Arg

extraArgs 是傳遞給控制平面元件的額外標誌集。此列表中的引數名稱是命令列中出現的標誌名稱,但不帶前導破折號。額外引數將覆蓋現有的預設引數。允許重複的額外引數。

extraVolumes
[]HostPathMount

extraVolumes 是一個額外的宿主機卷集,掛載到控制平面元件。

extraEnvs
[]EnvVar

extraEnvs 是傳遞給控制平面元件的額外環境變數集。使用 extraEnvs 傳遞的環境變數將覆蓋 kubeadm 預設新增的任何現有環境變數或 *_proxy 環境變數。

DNS

出現在

DNS 定義了叢集中應使用的 DNS 外掛

欄位描述
ImageMeta [必填]
ImageMeta
(ImageMeta 的成員已嵌入到此型別中。)

imageMeta 允許自定義 DNS 外掛使用的映象。

disabled [必填]
bool

disabled 指定是否在此叢集中停用此外掛。

發現

出現在

Discovery 指定了 kubelet 在 TLS 引導過程中使用的選項

欄位描述
bootstrapToken
BootstrapTokenDiscovery

bootstrapToken 用於設定基於引導令牌的發現選項。bootstrapTokenfile 是互斥的。

file
FileDiscovery

file 用於指定一個 kubeconfig 檔案(或 URL),從中載入叢集資訊。bootstrapTokenfile 是互斥的。

tlsBootstrapToken
string

tlsBootstrapToken 是用於 TLS 引導的令牌。如果設定了 bootstrapToken,則此欄位預設為 bootstrapToken.token,但可以被覆蓋。如果設定了 file,則在 KubeConfigFile 不包含任何其他身份驗證資訊的情況下,此欄位**必須設定**。

EncryptionAlgorithmType

(string 的別名)

出現在

EncryptionAlgorithmType 可以定義非對稱加密演算法型別。

EnvVar

出現在

EnvVar 表示容器中的環境變數。

欄位描述
EnvVar [必填]
core/v1.EnvVar
(EnvVar 的成員已嵌入到此型別中。) 未提供描述。

Etcd

出現在

Etcd 包含描述 Etcd 配置的元素。

欄位描述
本地
LocalEtcd

local 提供用於配置本地 etcd 例項的配置選項。localexternal 是互斥的。

external
ExternalEtcd

external 描述瞭如何連線到外部 etcd 叢集。localexternal 是互斥的。

ExternalEtcd

出現在

ExternalEtcd 描述了一個外部 etcd 叢集。Kubeadm 對證書檔案存放位置一無所知,必須提供。

欄位描述
endpoints [必填]
[]string

endpoints 包含 etcd 成員列表。

caFile [必填]
string

caFile 是用於保護 etcd 通訊的 SSL 證書頒發機構 (CA) 檔案。如果使用 TLS 連線,則必需。

certFile [必填]
string

certFile 是用於保護 etcd 通訊的 SSL 證書檔案。如果使用 TLS 連線,則必需。

keyFile [必填]
string

keyFile 是用於保護 etcd 通訊的 SSL 金鑰檔案。如果使用 TLS 連線,則必需。

FileDiscovery

出現在

FileDiscovery 用於指定一個 kubeconfig 檔案(或 URL),從中載入叢集資訊。

欄位描述
kubeConfigPath [必填]
string

kubeConfigPath 用於指定實際的檔案路徑或 URL 到 kubeconfig 檔案,從中載入叢集資訊。

HostPathMount

出現在

HostPathMount 包含描述從宿主機掛載的卷的元素。

欄位描述
name [必填]
string

name 是 Pod 模板中卷的名稱。

hostPath [必填]
string

hostPath 是將在 Pod 中掛載的宿主機路徑。

mountPath [必填]
string

mountPathhostPath 將掛載到 Pod 內的路徑。

readOnly
bool

readOnly 控制對卷的寫訪問。

pathType
core/v1.HostPathType

pathTypehostPath 的型別。

ImageMeta

出現在

ImageMeta 允許自定義非 Kubernetes/Kubernetes 釋出流程產生的元件所使用的映象

欄位描述
imageRepository
string

imageRepository 設定拉取映象的容器登錄檔。如果未設定,則將使用 ClusterConfiguration 中定義的 imageRepository

imageTag
string

imageTag 允許為映象指定一個標籤。如果設定了此值,kubeadm 在升級期間不會自動更改上述元件的版本。

JoinControlPlane

出現在

JoinControlPlane 包含描述將在加入節點上部署的附加控制平面例項的元素。

欄位描述
localAPIEndpoint
APIEndpoint

localAPIEndpoint 代表將在該節點上部署的 API 伺服器例項的端點。

certificateKey
string

certificateKey 是在將新控制平面節點加入集群后,用於解密從 Secret 下載的證書的金鑰。對應的加密金鑰在 InitConfiguration 中。證書金鑰是一個十六進位制編碼的字串,是 32 位元組大小的 AES 金鑰。

LocalEtcd

出現在

LocalEtcd 描述了 kubeadm 應本地執行一個 etcd 叢集。

欄位描述
ImageMeta [必填]
ImageMeta
(ImageMeta 的成員已嵌入到此型別中。)

ImageMeta 允許自定義用於 etcd 的容器

dataDir [必填]
string

dataDir 是 etcd 放置其資料的目錄。預設為 "/var/lib/etcd"。

extraArgs [必填]
[]Arg

extraArgs 是在 etcd 在靜態 Pod 中執行時提供的額外引數。此列表中的引數名稱是命令列中出現的標誌名稱,但不帶前導破折號。額外引數將覆蓋現有的預設引數。允許重複的額外引數。

extraEnvs
[]EnvVar

extraEnvs 是傳遞給控制平面元件的額外環境變數集。使用 extraEnvs 傳遞的環境變數將覆蓋 kubeadm 預設新增的任何現有環境變數或 *_proxy 環境變數。

serverCertSANs
[]string

serverCertSANs 為 etcd 伺服器簽名證書設定額外的備用名稱 (SAN)。

peerCertSANs
[]string

peerCertSANs 為 etcd peer 簽名證書設定額外的備用名稱 (SAN)。

網路

出現在

Networking 包含描述叢集網路配置的元素。

欄位描述
serviceSubnet
string

serviceSubnet 是 Kubernetes Services 使用的子網。預設為 "10.96.0.0/12"。

podSubnet
string

podSubnet 是 Pod 使用的子網。

dnsDomain
string

dnsDomain 是 Kubernetes Services 使用的 DNS 域。預設為 "cluster.local"。

NodeRegistrationOptions

出現在

NodeRegistrationOptions 包含與透過 kubeadm initkubeadm join 將新控制平面或節點註冊到叢集相關的欄位。

欄位描述
name
string

name 是此 kubeadm initkubeadm join 操作中將建立的 Node API 物件的 .Metadata.Name 欄位。此欄位也用於 kubelet 到 API 伺服器的客戶端證書的 CommonName 欄位。如果未提供,則預設為節點的 hostname。

criSocket
string

criSocket 用於檢索容器執行時資訊。此資訊將作為註解新增到 Node API 物件中,以便將來重用。

taints [必填]
[]core/v1.Taint

taints 指定了 Node API 物件應註冊的汙點。如果此欄位未設定,即 nil,則將為控制平面節點預設設定一個控制平面汙點。如果您不想汙點化您的控制平面節點,請在 YAML 檔案中將此欄位設定為一個空列表,即 taints: []。此欄位僅用於節點註冊。

kubeletExtraArgs
[]Arg

kubeletExtraArgs 將額外的引數傳遞給 kubelet。此處的引數透過 kubeadm 在執行時寫入的用於 kubelet 源的配置檔案傳遞給 kubelet 命令列。這會覆蓋 kubelet-config ConfigMap 中的通用基本級別配置。解析時,標誌具有更高的優先順序。這些值是區域性的,特定於 kubeadm 執行的節點。此列表中的引數名稱是命令列中出現的標誌名稱,但不帶前導破折號。額外引數將覆蓋現有的預設引數。允許重複的額外引數。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供了一系列要在當前節點註冊時忽略的預檢錯誤,例如 'IsPrivilegedUser,Swap'。值 'all' 會忽略所有檢查的錯誤。

imagePullPolicy
core/v1.PullPolicy

imagePullPolicy 指定了在 kubeadm initjoin 操作期間拉取映象的策略。此欄位的值必須是 "Always"、"IfNotPresent" 或 "Never" 之一。如果此欄位未設定,kubeadm 將預設設定為 "IfNotPresent",或在映象不存在於宿主機時拉取所需映象。

imagePullSerial
bool

imagePullSerial 指定了 kubeadm 執行的映象拉取是序列還是並行。預設值:true

Patches

出現在

Patches 包含與在 kubeadm 部署的元件上應用補丁相關的選項。

欄位描述
directory
string

directory 是一個目錄的路徑,其中包含名為 "target[suffix][+patchtype].extension" 的檔案。例如,“kube-apiserver0+merge.yaml”或僅“etcd.json”。“target”可以是“kube-apiserver”、“kube-controller-manager”、“kube-scheduler”、“etcd”、“kubeletconfiguration”、“corednsdeployment”之一。“patchtype”可以是“strategic”、“merge”或“json”之一,並且與 kubectl 支援的補丁格式匹配。預設的“patchtype”是“strategic”。“extension”必須是“json”或“yaml”。“suffix”是一個可選字串,可用於確定哪些補丁按字母數字順序首先應用。

Proxy

出現在

Proxy 定義了叢集中應使用的代理外掛。

欄位描述
disabled [必填]
bool

disabled 指定是否在此叢集中停用此外掛。

Timeouts

出現在

Timeouts 包含適用於 kubeadm 命令的各種超時。

欄位描述
controlPlaneComponentHealthCheck
meta/v1.Duration

controlPlaneComponentHealthCheck 是在 kubeadm initkubeadm join 期間等待控制平面元件(例如 API 伺服器)健康的超時時間。預設值:4m

kubeletHealthCheck
meta/v1.Duration

kubeletHealthCheck 是在 kubeadm initkubeadm join 期間等待 kubelet 健康的超時時間。預設值:4m

kubernetesAPICall
meta/v1.Duration

kubernetesAPICall 是 kubeadm 客戶端完成對 API 伺服器請求的超時時間。這適用於所有型別的方法(GET、POST 等)。預設值:1m

etcdAPICall
meta/v1.Duration

etcdAPICall 是 kubeadm etcd 客戶端完成對 etcd 叢集請求的超時時間。預設值:2m

tlsBootstrap
meta/v1.Duration

tlsBootstrap 是等待 kubelet 完成加入節點的 TLS 引導的超時時間。預設值:5m

discovery
meta/v1.Duration

discovery 是 kubeadm 等待驗證加入節點的 API 伺服器身份的超時時間。預設值:5m

upgradeManifests [必填]
meta/v1.Duration

upgradeManifests 是升級靜態 Pod 清單的超時時間。預設值:5m

UpgradeApplyConfiguration

出現在

UpgradeApplyConfiguration 包含一組僅適用於“kubeadm upgrade apply”命令的可配置選項。

欄位描述
kubernetesVersion
string

kubernetesVersion 是控制平面的目標版本。

allowExperimentalUpgrades
bool

allowExperimentalUpgrades 指示 kubeadm 將不穩定的 Kubernetes 版本顯示為升級選項,並允許升級到 Kubernetes 的 alpha/beta/release candidate 版本。預設值:false

allowRCUpgrades
bool

啟用 allowRCUpgrades 將顯示 Kubernetes 的 release candidate 版本作為升級選項,並允許升級到 Kubernetes 的 release candidate 版本。

certificateRenewal
bool

certificateRenewal 指示 kubeadm 在升級期間執行證書續訂。預設值為 true。

dryRun
bool

dryRun 告知是否啟用了試執行模式,如果已設定,則不應用任何更改,僅輸出將要執行的操作。

etcdUpgrade
bool

etcdUpgrade 指示 kubeadm 在升級期間執行 etcd 升級。預設值為 true。

forceUpgrade
bool

forceUpgrade 標誌指示 kubeadm 在不提示確認的情況下升級叢集。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供了一系列要在升級過程中忽略的預檢錯誤,例如 IsPrivilegedUser,Swap。值 all 會忽略所有檢查的錯誤。

patches
Patches

patches 包含與在 kubeadm upgrade 期間應用到 kubeadm 部署的元件的補丁相關的選項。

printConfig
bool

printConfig 指定是否應列印升級中使用的配置檔案。

skipPhases [必填]
[]string

skipPhases 是在命令執行期間要跳過的階段列表。注意:此欄位目前被 kubeadm upgrade apply 忽略,但將來會得到支援。

imagePullPolicy
core/v1.PullPolicy

imagePullPolicy 指定了在 kubeadm upgrade apply 操作期間拉取映象的策略。此欄位的值必須是 "Always"、"IfNotPresent" 或 "Never" 之一。如果此欄位未設定,kubeadm 將預設設定為 "IfNotPresent",或在映象不存在於宿主機時拉取所需映象。

imagePullSerial
bool

imagePullSerial 指定了 kubeadm 執行的映象拉取是序列還是並行。預設值:true

UpgradeDiffConfiguration

出現在

UpgradeDiffConfiguration 包含一組僅適用於 kubeadm upgrade diff 命令的可配置選項。

欄位描述
kubernetesVersion
string

kubernetesVersion 是控制平面的目標版本。

contextLines
int

diffContextLines 是 diff 中的上下文行數。

UpgradeNodeConfiguration

出現在

UpgradeNodeConfiguration 包含一組僅適用於“kubeadm upgrade node”命令的可配置選項。

欄位描述
certificateRenewal
bool

certificateRenewal 指示 kubeadm 在升級期間執行證書續訂。預設值為 true。

dryRun
bool

dryRun 告知是否啟用了試執行模式,如果已設定,則不應用任何更改,僅輸出將要執行的操作。

etcdUpgrade
bool

etcdUpgrade 指示 kubeadm 在升級期間執行 etcd 升級。預設值為 true。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供了一系列要在升級過程中忽略的預檢錯誤,例如 'IsPrivilegedUser,Swap'。值 'all' 會忽略所有檢查的錯誤。

skipPhases
[]string

skipPhases 是在命令執行期間要跳過的階段列表。可以透過 kubeadm upgrade node phase --help 命令獲取階段列表。

patches
Patches

patches 包含與在 kubeadm upgrade 期間應用到 kubeadm 部署的元件的補丁相關的選項。

imagePullPolicy
core/v1.PullPolicy

imagePullPolicy 指定了在 kubeadm upgrade node 操作期間拉取映象的策略。此欄位的值必須是 "Always"、"IfNotPresent" 或 "Never" 之一。如果此欄位未設定,kubeadm 將預設設定為 "IfNotPresent",或在映象不存在於宿主機時拉取所需映象。

imagePullSerial
bool

imagePullSerial 指定了 kubeadm 執行的映象拉取是序列還是並行。預設值:true

UpgradePlanConfiguration

出現在

UpgradePlanConfiguration 包含一組僅適用於“kubeadm upgrade plan”命令的可配置選項。

欄位描述
kubernetesVersion [必填]
string

kubernetesVersion 是控制平面的目標版本。

allowExperimentalUpgrades
bool

allowExperimentalUpgrades 指示 kubeadm 將不穩定的 Kubernetes 版本顯示為升級選項,並允許升級到 Kubernetes 的 alpha/beta/release candidate 版本。預設值:false

allowRCUpgrades
bool

啟用 allowRCUpgrades 將顯示 Kubernetes 的 release candidate 版本作為升級選項,並允許升級到 Kubernetes 的 release candidate 版本。

dryRun
bool

dryRun 告知是否啟用了試執行模式,如果已設定,則不應用任何更改,僅輸出將要執行的操作。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供了一系列要在升級過程中忽略的預檢錯誤,例如 'IsPrivilegedUser,Swap'。值 'all' 會忽略所有檢查的錯誤。

printConfig
bool

printConfig 指定是否應列印升級中使用的配置檔案。

本頁面是自動生成的。

如果你打算報告此頁面存在的問題,請在問題描述中提及此頁面是自動生成的。修復可能需要在 Kubernetes 專案的其他地方進行。

最後修改日期:2025 年 6 月 7 日上午 11:24 PST:docs: 修正 `advertiseAddress` 拼寫錯誤 (654ca19b6f)