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
来重置节点。 - 现在可以在 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
- 邮件列表