这篇文章已经一年多了,较旧的文章可能包含过时的内容。请检查从发表以来,页面中的信息是否变得不正确。
作为 Kubernetes v1.31 发布的一部分,kubeadm
采用了全新版本(v1beta4)的配置文件格式。
之前 v1beta3 格式的配置现已正式弃用,这意味着尽管之前的格式仍然受支持,但你应迁移到 v1beta4 并停止使用已弃用的格式。
对 v1beta3 配置的支持将在至少 3 次 Kubernetes 次要版本发布后被移除。
在本文中,我将介绍关键的变更;我将解释 kubeadm v1beta4 配置格式,以及如何从 v1beta3 迁移到 v1beta4。
你可以参阅 v1beta4 配置格式的参考文档: kubeadm 配置 (v1beta4)。
此版本通过修复一些小问题并添加一些新字段来改进 v1beta3 格式。
简单而言,
dryRun 模式和 nodeRegistration.imagePullSerialcertificateValidityPeriod、caCertificateValidityPeriod、
encryptionAlgorithm、dns.disabled 和 proxy.disabledextraEnvsextraArgs 从映射变更为支持重复的结构化额外参数timeouts 结构有关细节请参阅以下官方文档:
ClusterConfiguration 下支持控制平面组件的自定义环境变量。
可以使用 apiServer.extraEnvs、controllerManager.extraEnvs、scheduler.extraEnvs、etcd.local.extraEnvs。--config 文件传递给 kubeadm reset 来重置节点。dryRun 模式现在在 InitConfiguration 和 JoinConfiguration 中可配置。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 本身的可扩展性。
如果你的配置未使用最新版本,建议你使用 kubeadm config migrate 命令进行迁移。
此命令读取使用旧格式的现有配置文件,并写入一个使用当前格式的新文件。
使用 kubeadm v1.31,运行 kubeadm config migrate --old-config old-v1beta3.yaml --new-config new-v1beta4.yaml
衷心感谢在此特性的设计、实现和评审中提供帮助的所有贡献者:
如果你有兴趣参与 kubeadm 配置的后续讨论,可以通过多种方式与 kubeadm 或 SIG-cluster-lifecycle 联系: