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,有新字段,包括 certificateValidityPeriodcaCertificateValidityPeriodencryptionAlgorithmdns.disabledproxy.disabled
  • 支持所有控制平面组件的 extraEnvs
  • extraArgs 从映射更改为用于重复的结构化额外参数
  • 为 init、join、upgrade 和 reset 添加一个 timeouts 结构。

有关详细信息,您可以查看下面的官方文档

  • 支持 ClusterConfiguration 下控制平面组件中的自定义环境变量。使用 apiServer.extraEnvscontrollerManager.extraEnvsscheduler.extraEnvsetcd.local.extraEnvs
  • v1beta4 现在支持 ResetConfiguration API 类型。用户可以通过将 --config 文件传递给 kubeadm reset 来重置节点。
  • 现在可以在 InitConfiguration 和 JoinConfiguration 中配置 dryRun 模式。
  • 将现有的字符串/字符串额外参数映射替换为支持重复项的结构化额外参数。此更改适用于 ClusterConfiguration - apiServer.extraArgscontrollerManager.extraArgsscheduler.extraArgsetcd.local.extraArgs。也适用于 nodeRegistrationOptions.kubeletExtraArgs
  • 添加了 ClusterConfiguration.encryptionAlgorithm,可用于设置此集群的密钥和证书使用的非对称加密算法。可以是“RSA-2048”(默认)、“RSA-3072”、“RSA-4096”或“ECDSA-P256”之一。
  • 添加了 ClusterConfiguration.dns.disabledClusterConfiguration.proxy.disabled,可用于在集群初始化期间禁用 CoreDNS 和 kube-proxy 插件。在集群创建期间跳过相关插件阶段会将相同字段设置为 true
  • InitConfigurationJoinConfiguration 中添加了 nodeRegistration.imagePullSerial 字段,可用于控制 kubeadm 是串行还是并行拉取镜像。
  • 当将 --config 传递给 kubeadm upgrade 子命令时,v1beta4 现在支持 UpgradeConfiguration kubeadm API。对于 upgrade 子命令,kubelet 和 kube-proxy 的组件配置以及 InitConfiguration 和 ClusterConfiguration 的使用现在已弃用,并且在传递 --config 时将被忽略。
  • InitConfigurationJoinConfigurationResetConfigurationUpgradeConfiguration 添加了 timeouts 结构,可用于配置各种超时。ClusterConfiguration.timeoutForControlPlane 字段已替换为 timeouts.controlPlaneComponentHealthCheckJoinConfiguration.discovery.timeout 已替换为 timeouts.discovery
  • ClusterConfiguration 添加了 certificateValidityPeriodcaCertificateValidityPeriod 字段。这些字段可用于控制 kubeadm 在诸如 initjoinupgradecerts 等子命令期间生成的证书的有效期。非 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

我该如何参与?

非常感谢所有帮助设计、实现和审查此功能的贡献者

对于那些有兴趣参与未来关于 kubeadm 配置的讨论的人,您可以通过多种方式联系 kubeadm 或 SIG-cluster-lifecycle