Kubernetes v1.31:kubeadm v1beta4
作為 Kubernetes v1.31 版本的一部分,kubeadm
正在採用其組態檔案格式的新版本 (v1beta4)。先前的 v1beta3 格式組態現在已正式棄用,這表示它受到支援,但您應該遷移到 v1beta4 並停止使用已棄用的格式。在至少 3 個 Kubernetes 次要版本之後,將移除對 v1beta3 組態的支援。
在本文中,我將帶您瞭解主要變更;我將說明 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 類型。使用者可以透過將
--config
檔案傳遞給kubeadm reset
來重置節點。 dryRun
模式現在可在 InitConfiguration 和 JoinConfiguration 中設定。- 將現有的字串/字串額外引數地圖替換為支援重複項的結構化額外引數。此變更適用於
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。對於升級子命令,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
- 郵件列表