本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。

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
  • v1beta4 现在支持 ResetConfiguration API 类型。用户可以通过向 kubeadm reset 传递 --config 文件来重置节点。
  • 现在可以在 InitConfiguration 和 JoinConfiguration 中配置 dryRun 模式。
  • 将现有的字符串/字符串额外参数映射替换为支持重复项的结构化额外参数。此更改适用于 ClusterConfigurationapiServer.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.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