本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

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,有一些新欄位,包括 certificateValidityPeriodcaCertificateValidityPeriodencryptionAlgorithmdns.disabledproxy.disabled
  • 支援為所有控制平面元件設定 extraEnvs
  • extraArgs 從對映更改為支援重複項的結構化額外引數
  • 為 init、join、upgrade 和 reset 添加了 timeouts 結構。

有關詳細資訊,您可以檢視下面的官方文件

  • ClusterConfiguration 下支援控制平面元件中的自定義環境變數。使用 apiServer.extraEnvscontrollerManager.extraEnvsscheduler.extraEnvsetcd.local.extraEnvs
  • v1beta4 現在支援 ResetConfiguration API 型別。使用者可以透過向 kubeadm reset 傳遞 --config 檔案來重置節點。
  • 現在可以在 InitConfiguration 和 JoinConfiguration 中配置 dryRun 模式。
  • 將現有的字串/字串額外引數對映替換為支援重複項的結構化額外引數。此更改適用於 ClusterConfigurationapiServer.extraArgscontrollerManager.extraArgsscheduler.extraArgsetcd.local.extraArgs,也適用於 nodeRegistrationOptions.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。對於 upgrade 子命令,kubelet 和 kube-proxy 的元件配置以及 InitConfiguration 和 ClusterConfiguration 的使用現在已被棄用,在傳遞 --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 本身的可擴充套件性。

如何將 v1beta3 配置遷移到 v1beta4?

如果您的配置未使用最新版本,建議您使用 kubeadm config migrate 命令進行遷移。

此命令讀取使用舊格式的現有配置檔案,並寫入使用當前格式的新檔案。

示例

使用 kubeadm v1.31,執行 kubeadm config migrate --old-config old-v1beta3.yaml --new-config new-v1beta4.yaml

我如何參與?

非常感謝所有為該功能的設計、實現和審查做出貢獻的貢獻者

對於有興趣參與未來 kubeadm 配置討論的人,您可以透過多種方式聯絡 kubeadm 或 SIG-cluster-lifecycle