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.disabledproxy.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.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.controlPlaneComponentHealthCheck 替换。JoinConfiguration.discovery.timeouttimeouts.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