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

修复kubectl版本偏差:降级Kubernetes服务器版本适配客户端v1.21

解决Kubectl客户端与Kubernetes服务器版本差异(降级服务器至v1.21.x)

当前环境版本信息:

$ kubectl version --short  
Client Version: v1.21.14  
Server Version: v1.24.3  
WARNING: version difference between client (1.21) and server (1.24) exceeds the supported minor version skew of +/-1  

由于需要保留kubectl客户端v1.21.14,需将Kubernetes服务器降级至与客户端兼容的版本(推荐同版本v1.21.14,或最多差1个小版本的v1.22.x)。以下是不同部署场景的降级步骤:

一、Kubeadm自建集群降级步骤

1. 前置备份与版本准备

  • 备份etcd数据(避免降级失败导致数据丢失):
    ETCDCTL_API=3 etcdctl snapshot save /tmp/etcd-snapshot.db \
      --endpoints=https://127.0.0.1:2379 \
      --cacert=/etc/kubernetes/pki/etcd/ca.crt \
      --cert=/etc/kubernetes/pki/etcd/server.crt \
      --key=/etc/kubernetes/pki/etcd/server.key
    
  • 安装对应版本的kubeadm(以Debian/Ubuntu为例):
    sudo apt-mark hold kubeadm kubelet kubectl
    sudo apt-get update && sudo apt-get install -y --allow-downgrades kubeadm=1.21.14-00
    
    RHEL/CentOS系统替换为:
    sudo yum install -y kubeadm-1.21.14-0 --disableexcludes=kubernetes
    

2. 控制平面节点降级

  • 驱逐节点上的Pod(单节点集群可跳过):
    kubectl drain <控制平面节点名称> --ignore-daemonsets
    
  • 执行降级操作:
    sudo kubeadm upgrade apply v1.21.14 --force
    
  • 恢复节点调度:
    kubectl uncordon <控制平面节点名称>
    

3. 工作节点降级

  • 逐台登录工作节点,先驱逐Pod:
    kubectl drain <工作节点名称> --ignore-daemonsets
    
  • 降级kubelet与kubectl(Debian/Ubuntu):
    sudo apt-get install -y --allow-downgrades kubelet=1.21.14-00 kubectl=1.21.14-00
    sudo systemctl daemon-reload
    sudo systemctl restart kubelet
    
    RHEL/CentOS系统替换为:
    sudo yum install -y kubelet-1.21.14-0 kubectl-1.21.14-0 --disableexcludes=kubernetes
    sudo systemctl daemon-reload
    sudo systemctl restart kubelet
    
  • 恢复节点调度:
    kubectl uncordon <工作节点名称>
    

4. 验证结果

执行命令确认版本匹配:

kubectl version --short

预期输出:

Client Version: v1.21.14
Server Version: v1.21.14

二、云托管集群降级操作

不同云厂商的集群降级路径不同,核心是在控制台选择目标版本触发更新:

  • AWS EKS:进入EKS控制台 → 选中目标集群 → 「升级/降级」选项 → 选择v1.21.x版本,等待集群更新完成。
  • Azure AKS:进入AKS控制台 → 选中目标集群 → 「升级」选项 → 选择v1.21.x版本,启动降级流程。
  • GCP GKE:进入GKE控制台 → 选中目标集群 → 「编辑集群」→ 控制平面版本选择v1.21.x,更新后再同步节点池版本至v1.21.x。

注意:部分云厂商可能已停止对v1.21.x版本的支持,需提前确认版本可用性;若无法降级,需评估是否调整客户端版本(但此方案不符合需求,仅作备选)。

关键注意事项

  • 降级前必须备份所有核心数据,包括etcd快照、应用配置、持久化存储卷等。
  • 确认集群内所有附加组件(CNI插件、Ingress控制器、Operator等)兼容v1.21.x版本,避免降级后组件失效。
  • 单节点集群降级会导致部分服务临时不可用,建议在业务低峰期操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:03:21