本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Kubernetes v1.31: kubeadm v1beta4
作為 Kubernetes v1.31 版本的一部分,kubeadm
正在採用其配置檔案格式的新版本(v1beta4)。以前的 v1beta3 格式的配置現在被正式棄用,這意味著它仍然受支援,但您應該遷移到 v1beta4 並停止使用已棄用的格式。對 v1beta3 配置的支援將在至少 3 個 Kubernetes 次要版本後被移除。
在本文中,我將帶您瞭解關鍵更改;我將解釋 kubeadm v1beta4 配置格式,以及如何從 v1beta3 遷移到 v1beta4。
您可以閱讀 v1beta4 配置格式的參考文件:kubeadm 配置 (v1beta4)。
自 v1beta3 以來的更改列表
此版本在 v1beta3 格式的基礎上進行了改進,修復了一些小問題並添加了一些新欄位。
簡而言之:
- 兩個新的配置元素:ResetConfiguration 和 UpgradeConfiguration
- 對於 InitConfiguration 和 JoinConfiguration,支援
dryRun
模式和nodeRegistration.imagePullSerial
- 對於 ClusterConfiguration,有一些新欄位,包括
certificateValidityPeriod
、caCertificateValidityPeriod
、encryptionAlgorithm
、dns.disabled
和proxy.disabled
。 - 支援為所有控制平面元件設定
extraEnvs
extraArgs
從對映更改為支援重複項的結構化額外引數- 為 init、join、upgrade 和 reset 添加了
timeouts
結構。
有關詳細資訊,您可以檢視下面的官方文件
- 在
ClusterConfiguration
下支援控制平面元件中的自定義環境變數。使用apiServer.extraEnvs
、controllerManager.extraEnvs
、scheduler.extraEnvs
、etcd.local.extraEnvs
。 - v1beta4 現在支援 ResetConfiguration API 型別。使用者可以透過向
kubeadm reset
傳遞--config
檔案來重置節點。 - 現在可以在 InitConfiguration 和 JoinConfiguration 中配置
dryRun
模式。 - 將現有的字串/字串額外引數對映替換為支援重複項的結構化額外引數。此更改適用於
ClusterConfiguration
的apiServer.extraArgs
、controllerManager.extraArgs
、scheduler.extraArgs
、etcd.local.extraArgs
,也適用於nodeRegistrationOptions.kubeletExtraArgs
。 - 添加了
ClusterConfiguration.encryptionAlgorithm
,可用於設定此叢集的金鑰和證書所使用的非對稱加密演算法。可以是“RSA-2048”(預設)、“RSA-3072”、“RSA-4096”或“ECDSA-P256”之一。 - 添加了
ClusterConfiguration.dns.disabled
和ClusterConfiguration.proxy.disabled
,可用於在叢集初始化期間停用 CoreDNS 和 kube-proxy 外掛。在叢集建立期間跳過相關的外掛階段,將把相同的欄位設定為true
。 - 在
InitConfiguration
和JoinConfiguration
中添加了nodeRegistration.imagePullSerial
欄位,可用於控制 kubeadm 是序列還是並行拉取映象。 - 在將
--config
傳遞給kubeadm upgrade
子命令時,v1beta4 現在支援 UpgradeConfiguration kubeadm API。對於 upgrade 子命令,kubelet 和 kube-proxy 的元件配置以及 InitConfiguration 和 ClusterConfiguration 的使用現在已被棄用,在傳遞--config
時將被忽略。 - 在
InitConfiguration
、JoinConfiguration
、ResetConfiguration
和UpgradeConfiguration
中添加了timeouts
結構,可用於配置各種超時。ClusterConfiguration.timeoutForControlPlane
欄位被timeouts.controlPlaneComponentHealthCheck
替換。JoinConfiguration.discovery.timeout
被timeouts.discovery
替換。 - 在
ClusterConfiguration
中添加了certificateValidityPeriod
和caCertificateValidityPeriod
欄位。這些欄位可用於控制 kubeadm 在init
、join
、upgrade
和certs
等子命令期間生成的證書的有效期。非 CA 證書的預設值仍為 1 年,CA 證書的預設值為 10 年。另請注意,只有非 CA 證書可以透過kubeadm certs renew
進行續訂。
這些更改簡化了使用 kubeadm 的工具的配置,並提高了 kubeadm 本身的可擴充套件性。
如何將 v1beta3 配置遷移到 v1beta4?
如果您的配置未使用最新版本,建議您使用 kubeadm config migrate 命令進行遷移。
此命令讀取使用舊格式的現有配置檔案,並寫入使用當前格式的新檔案。
示例
使用 kubeadm v1.31,執行 kubeadm config migrate --old-config old-v1beta3.yaml --new-config new-v1beta4.yaml
我如何參與?
非常感謝所有為該功能的設計、實現和審查做出貢獻的貢獻者
- Lubomir I. Ivanov (neolit123)
- Dave Chen (chendave)
- Paco Xu (pacoxu)
- Sata Qiu (sataqiu)
- Baofa Fan (carlory)
- Calvin Chen (calvin0327)
- Ruquan Zhao (ruquanzhao)
對於有興趣參與未來 kubeadm 配置討論的人,您可以透過多種方式聯絡 kubeadm 或 SIG-cluster-lifecycle
- v1beta4 相關事項在 kubeadm issue #2890 中進行跟蹤。
- Slack: #kubeadm 或 #sig-cluster-lifecycle
- 郵件列表