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从 map 更改为支持重复的结构化 extra 参数- 为初始化、加入、升级和重置添加
timeouts结构。
详细信息请参见下方 官方文档
- 支持在
ClusterConfiguration下的控制平面组件中自定义环境变量。使用apiServer.extraEnvs,controllerManager.extraEnvs,scheduler.extraEnvs,etcd.local.extraEnvs。 - v1beta4 中现已支持 ResetConfiguration API 类型。用户可以通过将
--config文件传递给kubeadm reset来重置节点。 dryRun模式现在可以在 InitConfiguration 和 JoinConfiguration 中配置。- 将现有的 string/string extra argument map 替换为支持重复的结构化 extra arguments。此更改适用于
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
- 邮件列表