kubeadm 組態 (v1beta4)

概觀

套件 v1beta4 定義 kubeadm 組態檔案格式的 v1beta4 版本。此版本改進 v1beta3 格式,修正一些小問題並新增一些欄位。

自 v1beta3 以來的變更清單

  • ClusterConfiguration 下的控制平面元件中支援自訂環境變數。使用 apiServer.extraEnvscontrollerManager.extraEnvsscheduler.extraEnvsetcd.local.extraEnvs
  • v1beta4 現在支援 ResetConfiguration API 類型。使用者可以透過將 --config 檔案傳遞至 kubeadm reset 來重設節點。
  • 現在可以在 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 是否依序或平行提取映像檔。
  • 當將 --config 傳遞至 kubeadm upgrade 子命令時,v1beta4 現在支援 UpgradeConfiguration kubeadm API。將元件組態用於 kubeletkube-proxyInitConfigurationClusterConfiguration 已棄用,並且在將 --config 傳遞至 upgrade 子命令時會被忽略。
  • InitConfigurationJoinConfigurationResetConfigurationUpgradeConfiguration 中新增 Timeouts 結構,可用於設定各種逾時。ClusterConfiguration.timeoutForControlPlane 欄位已由 Timeouts.controlPlaneComponentHealthCheck 取代。JoinConfiguration.discovery.timeout 已由 timeouts.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 的建議方式是傳遞 YAML 設定檔,並搭配 --config 選項。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 server 上強制執行 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 的情況下,這些設定是 bootstrap token 的設定以及所有特定於執行 kubeadm 的節點的設定,包括

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

  • LocalAPIEndpoint,代表要在此節點上部署的 API server 實例的端點;使用它來自訂 API server 宣告位址 (advertise address) 等。

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

ClusterConfiguration 類型應用於設定叢集範圍的設定,包括以下設定

  • networking,其中包含叢集網路拓撲的設定;使用它來自訂 Pod 子網路或服務子網路等。

  • etcd:使用它來自訂本機 etcd 或設定 API server 以使用外部 etcd 叢集等。

  • kube-apiserver、kube-scheduler、kube-controller-manager 設定;使用它來自訂控制平面組件,方法是新增自訂設定或覆寫 kubeadm 預設設定。

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

KubeProxyConfiguration 類型應用於變更傳遞到叢集中部署的 kube-proxy 實例的設定。如果未提供此物件或僅部分提供,kubeadm 將套用預設值。

請參閱 https://kubernetes.dev.org.tw/docs/reference/command-line-tools-reference/kube-proxy/ 或 https://pkg.go.dev/k8s.io/kube-proxy/config/v1alpha1#KubeProxyConfiguration 以取得 kube-proxy 官方文件。

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

KubeletConfiguration 類型應用於變更將傳遞到叢集中部署的所有 kubelet 實例的設定。如果未提供此物件或僅部分提供,kubeadm 將套用預設值。

請參閱 https://kubernetes.dev.org.tw/docs/reference/command-line-tools-reference/kubelet/ 或 https://pkg.go.dev/k8s.io/kubelet/config/v1beta1#KubeletConfiguration 以取得 kubelet 官方文件。

以下是一個完整填寫的 YAML 檔案範例,其中包含多個設定類型,用於 kubeadm init 執行期間。

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 設定類型

當使用 --config 選項執行 kubeadm join 時,應提供 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 socket 或任何其他應僅適用於此節點的設定 (例如,節點 IP)。

  • apiEndpoint,代表最終將在此節點上部署的 API server 實例的端點。

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 描述一個 bootstrap token,以 Secret 形式儲存在叢集中

欄位描述
token [必填]
BootstrapTokenString

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

description
string

description 設定一個人性化的訊息,說明此 token 存在的原因及其用途,以便其他管理員可以了解其目的。

ttl
meta/v1.Duration

ttl 定義此 token 的存活時間 (time to live)。預設為 24hexpiresttl 是互斥的。

expires
meta/v1.Time

expires 指定此 token 過期的時間戳記。預設為在執行階段根據 ttl 動態設定。expiresttl 是互斥的。

usages
[]string

usages 描述此 token 可以使用的用途。預設情況下可用於建立雙向信任,但可以在此處變更。

groups
[]string

groups 指定當此 token 用於驗證時,將驗證為額外群組

BootstrapTokenString

出現在

BootstrapTokenString 是一個格式為 abcdef.abcdef0123456789 的 token,用於從加入節點的角度驗證 API server 的實用性,以及作為節點在 "kubeadm join" 啟動階段的驗證方法。此 token 是且應該是短效期的。

欄位描述
- [必填]
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 server 的額外設定。

controllerManager
ControlPlaneComponent

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

scheduler
ControlPlaneComponent

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

dns
DNS

dns 定義叢集中安裝的 DNS 附加元件的選項。

proxy [必填]
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,該 ConfigMap 由 kubeadm upgrade 等使用。這些欄位必須為 omitempty。

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

bootstrapTokenskubeadm init 時受到尊重,並描述要建立的一組 Bootstrap Token。此資訊不會上傳到 kubeadm 叢集 configmap,部分原因是其敏感性

dryRun [必填]
bool

dryRun 告知是否啟用 dry run 模式,不要在 dry run 模式下套用任何變更,僅輸出將執行的操作。

nodeRegistration
NodeRegistrationOptions

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

localAPIEndpoint
APIEndpoint

localAPIEndpoint 代表在此控制平面節點上部署的 API server 實例的端點。在 HA 設定中,這與 ClusterConfiguration.controlPlaneEndpoint 不同,因為 controlPlaneEndpoint 是叢集的全域端點,然後將請求負載平衡到每個個別的 API server。此設定物件可讓您自訂本機 API server 宣告其可存取的 IP/DNS 名稱和埠。預設情況下,kubeadm 嘗試自動偵測預設介面的 IP 並使用該 IP,但如果該程序失敗,您可以在此處設定所需的值。

certificateKey
string

certificateKey 設定金鑰,憑藉該金鑰,憑證和金鑰在 uploadcerts init 階段上傳到叢集中的 Secret 之前進行加密。憑證金鑰是一個十六進位編碼的字串,它是大小為 32 位元組的 AES 金鑰。

skipPhases
[]string

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

patches
Patches

patches 包含與將修補程式套用至 kubeadm 在 kubeadm init 期間部署的組件相關的選項。

timeouts
Timeouts

timeouts 保留適用於 kubeadm 命令的各種逾時。

JoinConfiguration

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

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

dryRun 告知是否啟用 dry run 模式,如果已設定,則不要套用任何變更,僅輸出將執行的操作。

nodeRegistration
NodeRegistrationOptions

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

caCertPath
string

caCertPath 是用於保護節點和控制平面之間通訊的 SSL 憑證授權單位的路徑。預設為 "/etc/kubernetes/pki/ca.crt"。

discovery [必填]
Discovery

discovery 指定 kubelet 在 TLS bootstrap 程序期間使用的選項。

controlPlane
JoinControlPlane

controlPlane 定義要在加入節點上部署的其他控制平面實例。如果為 nil,則不會部署其他控制平面實例。

skipPhases
[]string

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

patches
Patches

patches 包含與將修補程式套用至 kubeadm 在 kubeadm join 期間部署的組件相關的選項。

timeouts
Timeouts

timeouts 保留適用於 kubeadm 命令的各種逾時。

ResetConfiguration

ResetConfiguration 包含特定於 kubeadm reset 的執行階段資訊欄位列表。

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

cleanupTmpDir 指定在 reset 程序期間是否應清除 "/etc/kubernetes/tmp" 目錄。

certificatesDir
string

certificatesDir 指定憑證儲存的目錄。如果指定,將在 reset 程序期間清除它。

criSocket
string

criSocket 用於檢索容器執行階段資訊,並用於移除容器。如果 criSocket 未由標誌或設定檔指定,kubeadm 將嘗試偵測一個有效的 CRI socket 來代替。

dryRun
bool

dryRun 告知是否啟用 dry run 模式,如果已設定,則不要套用任何變更,僅輸出將執行的操作。

force
bool

force 標誌指示 kubeadm 重設節點,而無需提示確認。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供在 reset 程序期間要忽略的 pre-flight 錯誤列表,例如 IsPrivilegedUser,Swap。值 all 忽略所有檢查中的錯誤。

skipPhases
[]string

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

unmountFlags
[]string

unmountFlagsunmount2() 系統呼叫標誌的列表,kubeadm 可以在 "reset" 期間解除安裝目錄時使用。此標誌可以是以下之一:"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 server 實例的元素。

欄位描述
advertiseAddress
string

dvertiseAddress 設定 API server 要宣告的 IP 位址。

bindPort
int32

bindPort 設定 API Server 要繫結的安全埠。預設為 6443。

APIServer

出現在

APIServer 保留叢集中 API server 部署的必要設定

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

certSANs 為 API Server 簽署憑證設定額外的 Subject Alternative Names (SAN)。

Arg

出現在

Arg 代表具有名稱和值的引數。

欄位描述
name [必填]
string

引數的名稱。

value [必填]
string

引數的值。

BootstrapTokenDiscovery

出現在

BootstrapTokenDiscovery 用於設定基於 bootstrap token 的探索選項。

欄位描述
token [必填]
string

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

apiServerEndpoint
string

apiServerEndpoint 是從中擷取資訊的 API server 的 IP 或網域名稱。

caCertHashes
[]string

caCertHashes 指定一組公鑰釘選,以便在使用基於 token 的探索時進行驗證。探索期間找到的根 CA 必須與這些值之一相符。指定空集合會停用根 CA 釘選,這可能不安全。每個雜湊都指定為 <type>:<value>,其中目前唯一支援的類型是 "sha256"。這是 DER 編碼 ASN.1 中 Subject Public Key Info (SPKI) 物件的十六進位編碼 SHA-256 雜湊。這些雜湊可以使用例如 OpenSSL 進行計算。

unsafeSkipCAVerification
bool

unsafeSkipCAVerification 允許在沒有透過 caCertHashes 進行 CA 驗證的情況下進行基於 token 的探索。這可能會削弱 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

出現在

Discovery 指定 kubelet 在 TLS Bootstrap 程序期間使用的選項

欄位描述
bootstrapToken
BootstrapTokenDiscovery

bootstrapToken 用於設定基於 bootstrap token 的探索選項。bootstrapTokenfile 是互斥的。

file
FileDiscovery

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

tlsBootstrapToken
string

tlsBootstrapToken 是用於 TLS bootstrapping 的 token。如果設定了 bootstrapToken,則此欄位預設為 bootstrapToken.token,但可以覆寫。如果設定了 file,則如果 KubeConfigFile 不包含任何其他驗證資訊,則必須設定此欄位。

EncryptionAlgorithmType

(string 的別名)

出現在

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

EnvVar

出現在

EnvVar 代表容器中存在的環境變數。

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

Etcd

出現在

Etcd 包含描述 Etcd 設定的元素。

欄位描述
local
LocalEtcd

local 提供用於設定本機 etcd 實例的設定旋鈕 (knob)。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 用於指定檔案或 URL 到 kubeconfig 檔案,從中載入叢集資訊。

欄位描述
kubeConfigPath [必填]
string

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

HostPathMount

出現在

HostPathMount 包含描述從主機掛載的磁碟區的元素。

欄位描述
name [必填]
string

name 是 Pod 範本內磁碟區的名稱。

hostPath [必填]
string

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

mountPath [必填]
string

mountPath 是 Pod 內的路徑,hostPath 將掛載到此處。

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 server 實例的端點。

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 是在靜態 Pod 內執行時提供給 etcd 二進位檔的額外引數。此列表中的引數名稱是命令列上顯示的標誌名稱,但不帶前導破折號。額外引數將覆寫現有的預設引數。允許重複的額外引數。

extraEnvs
[]EnvVar

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

serverCertSANs
[]string

serverCertSANs 為 etcd server 簽署憑證設定額外的 Subject Alternative Names (SAN)。

peerCertSANs
[]string

peerCertSANs 為 etcd peer 簽署憑證設定額外的 Subject Alternative Names (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 init 還是 kubeadm join

欄位描述
name
string

name 是將在此 kubeadm initkubeadm join 操作中建立的 Node API 物件的 .Metadata.Name 欄位。此欄位也用於 kubelet 用戶端憑證到 API server 的 CommonName 欄位中。如果未提供,則預設為節點的主機名稱。

criSocket
string

criSocket 用於檢索容器執行階段資訊。此資訊將註解到 Node API 物件,以供稍後重複使用。

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

taints 指定應註冊 Node API 物件的污點 (taint)。如果未設定此欄位,即 nil,則預設情況下會為控制平面節點設定控制平面污點。如果您不想污損您的控制平面節點,請將此欄位設定為空列表,即 YAML 檔案中的 taints: []。此欄位僅用於節點註冊。

kubeletExtraArgs
[]Arg

kubeletExtraArgs 將額外引數傳遞給 kubelet。此處的引數透過 kubeadm 在執行階段寫入的環境檔案傳遞到 kubelet 命令列,供 kubelet 來源。這會覆寫 kubelet-config ConfigMap 中的通用基本層級設定。剖析時,標誌具有更高的優先順序。這些值是本機的,並且特定於執行 kubeadm 的節點。此列表中的引數名稱是命令列上顯示的標誌名稱,但不帶前導破折號。額外引數將覆寫現有的預設引數。允許重複的額外引數。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供在註冊目前節點時要忽略的 pre-flight 錯誤切片,例如 '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 定義應在叢集中使用的 proxy 附加元件。

欄位描述
disabled [必填]
bool

disabled 指定是否要在叢集中停用此附加元件。

Timeouts

出現在

Timeouts 保留適用於 kubeadm 命令的各種逾時。

欄位描述
controlPlaneComponentHealthCheck
meta/v1.Duration

controlPlaneComponentHealthCheck 是在 kubeadm initkubeadm join 期間等待控制平面組件 (例如 API server) 處於健康狀態的時間量。預設值:4m

kubeletHealthCheck
meta/v1.Duration

kubeletHealthCheck 是在 kubeadm initkubeadm join 期間等待 kubelet 處於健康狀態的時間量。預設值:4m

kubernetesAPICall
meta/v1.Duration

kubernetesAPICall 是等待 kubeadm 用戶端完成對 API server 的請求的時間量。這適用於所有類型的方法 (GET、POST 等)。預設值:1m

etcdAPICall
meta/v1.Duration

etcdAPICall 是等待 kubeadm etcd 用戶端完成對 etcd 叢集的請求的時間量。預設值:2m

tlsBootstrap
meta/v1.Duration

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

discovery
meta/v1.Duration

discovery 是等待 kubeadm 驗證加入節點的 API server 身分的時間量。預設值:5m

upgradeManifests [必填]
meta/v1.Duration

upgradeManifests 是升級靜態 Pod manifest 的逾時。預設值: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 告知是否啟用 dry run 模式,如果已啟用,則不要套用任何變更,僅輸出將執行的操作。

etcdUpgrade
bool

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

forceUpgrade
bool

forceUpgrade 標誌指示 kubeadm 升級叢集,而無需提示確認。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供在升級程序期間要忽略的 pre-flight 錯誤切片,例如 IsPrivilegedUser,Swap。值 all 忽略所有檢查中的錯誤。

patches
Patches

patches 包含與將修補程式套用至 kubeadm 在 kubeadm upgrade 期間部署的組件相關的選項。

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 告知是否啟用 dry run 模式,如果已啟用,則不要套用任何變更,僅輸出將執行的操作。

etcdUpgrade
bool

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

ignorePreflightErrors
[]string

ignorePreflightErrors 提供在升級程序期間要忽略的 pre-flight 錯誤切片,例如 'IsPrivilegedUser,Swap'。值 all 忽略所有檢查中的錯誤。

skipPhases
[]string

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

patches
Patches

patches 包含與將修補程式套用至 kubeadm 在 kubeadm upgrade 期間部署的組件相關的選項。

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 告知是否啟用 dry run 模式,如果已啟用,則不要套用任何變更,僅輸出將執行的操作。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供在升級程序期間要忽略的 pre-flight 錯誤切片,例如 'IsPrivilegedUser,Swap'。值 all 忽略所有檢查中的錯誤。

printConfig
bool

printConfig 指定是否應印出將在升級中使用的設定檔。

此頁面為自動產生。

如果您計劃回報此頁面的問題,請在您的問題描述中提及此頁面為自動產生。此問題的修復可能需要在 Kubernetes 專案的其他地方進行。

最近修改時間為 2024 年 12 月 12 日下午 5:37 PST:Update config API for v1.32 (2914668152)