You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes 1.9.0升级至1.10时kubeadm upgrade plan报错如何解决?

解决kubeadm upgrade plan无法解码配置的问题

我之前在升级Kubernetes集群时遇到过一模一样的错误,这个问题大多是kubeadm-config ConfigMap的YAML格式有误,或者新旧kubeadm版本的配置结构不兼容导致的,下面是我亲测有效的解决步骤:

1. 先备份现有配置(重要!)

不管后续怎么操作,先把当前的kubeadm-config备份下来,避免改错了无法恢复:

kubectl -n kube-system get cm kubeadm-config -oyaml > kubeadm-config-backup.yaml

2. 检查ConfigMap的YAML格式

解码失败最常见的原因是YAML语法错误,比如缩进不对、冒号后面没加空格、特殊字符没有转义等。执行下面的命令查看完整配置:

kubectl -n kube-system get cm kubeadm-config -oyaml

仔细检查data字段下的配置内容,尤其是ClusterConfiguration部分,确保符合YAML规范。比如:

  • 所有层级的缩进必须是2个空格(不要用Tab)
  • 键名后面的冒号必须跟一个空格,比如apiServer:而不是apiServer:(无空格)
  • 字符串如果包含特殊字符(比如冒号、空格),需要用引号包裹

3. 确保使用目标版本的kubeadm

升级操作必须使用**目标版本(1.10)**的kubeadm来执行,如果你当前用的还是1.9的kubeadm,就会出现配置结构不兼容的问题。先安装1.10版本的kubeadm:

Debian/Ubuntu系统:

apt-get update && apt-get install -y kubeadm=1.10.0-00

RHEL/CentOS系统:

yum install -y kubeadm-1.10.0-0

4. 修复或重新生成kubeadm-config ConfigMap

如果检查后发现配置结构和1.10版本不兼容(比如1.9的某些字段在1.10中被废弃或修改了),可以重新生成符合1.10规范的配置:

  1. 先导出1.10版本的默认配置模板:
kubeadm config print init-defaults > kubeadm-config-1.10.yaml
  1. 编辑这个模板,替换成你现有集群的实际配置:
    • 修改apiServer.certSANs为你集群的API服务器地址、域名或IP
    • 修改networking.podSubnet为你当前使用的Pod网络CIDR(比如10.244.0.0/16)
    • 修改controlPlaneEndpoint为你的控制节点地址
  2. 用新配置更新ConfigMap:
kubectl -n kube-system replace cm kubeadm-config --from-file=kubeadm-config-1.10.yaml

如果上述方法无效,可以尝试删除旧的ConfigMap后重新创建:

kubectl -n kube-system delete cm kubeadm-config
kubeadm config print init-defaults | kubectl -n kube-system create cm kubeadm-config --from-file=-

然后再手动编辑ConfigMap补充集群的特定配置。

5. 重新执行升级计划

完成上述操作后,再次运行:

kubeadm upgrade plan

应该就能正常解码配置并显示可用的升级版本了。

内容的提问来源于stack exchange,提问作者sfgroups

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:04:31