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
。 - ResetConfiguration API 类型现在在 v1beta4 中得到支持。用户可以通过将
--config
文件传递给kubeadm reset
来重置节点。 dryRun
模式现在在 InitConfiguration 和 JoinConfiguration 中可配置。
- 用支持重复的结构化额外参数替换现有的 string/string 额外参数映射。
此变更适用于
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
- 邮件列表