本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。
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
- 邮件列表