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

有关细节请参阅以下官方文档

  • ClusterConfiguration 下支持控制平面组件的自定义环境变量。 可以使用 apiServer.extraEnvscontrollerManager.extraEnvsscheduler.extraEnvsetcd.local.extraEnvs
  • ResetConfiguration API 类型现在在 v1beta4 中得到支持。用户可以通过将 --config 文件传递给 kubeadm reset 来重置节点。
  • dryRun 模式现在在 InitConfiguration 和 JoinConfiguration 中可配置。
  • 用支持重复的结构化额外参数替换现有的 string/string 额外参数映射。 此变更适用于 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。 对于升级子命令,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 联系: