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
- 邮件列表