这篇文章已经一年多了,较旧的文章可能包含过时的内容。请检查从发表以来,页面中的信息是否变得不正确。

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。
  • ResetConfiguration API 类型现在在 v1beta4 中得到支持。用户可以通过将 --config 文件传递给 kubeadm reset 来重置节点。
  • dryRun 模式现在在 InitConfiguration 和 JoinConfiguration 中可配置。
  • 用支持重复的结构化额外参数替换现有的 string/string 额外参数映射。 此变更适用于 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。 对于升级子命令,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

我该如何参与?

衷心感谢在此特性的设计、实现和评审中提供帮助的所有贡献者:

如果你有兴趣参与 kubeadm 配置的后续讨论,可以通过多种方式与 kubeadm 或 SIG-cluster-lifecycle 联系:

最后修改 September 25, 2026 at 9:46 PM PST: feat: port the static site setup to dev-1.38 (5fd4039)