温馨提示×

linux k8s如何升级

小樊
38
2026-10-27 21:23:39
栏目: 智能运维

在 Linux 上“升级 K8s”通常指 升级 Kubernetes 集群(kubeadm 方式最常见),也包括 kubectl / kubelet / kube-proxy 等组件。下面按生产可用、最主流的 kubeadm 集群来说明。


一、升级前准备(非常重要)

1. 查看当前版本

kubectl get nodes
kubelet --version

2. 确认可升级版本

yum list --showduplicates kubeadm --disableexcludes=kubernetes
# 或
apt-cache madison kubeadm

⚠️ 规则:

  • 一次只能跨 一个次要版本
  • 例如:1.26 → 1.27 ✅
    1.26 → 1.28 ❌

3. 备份(强烈建议)

# etcd 备份
ETCDCTL_API=3 etcdctl snapshot save 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

二、升级控制平面(Master)

1. 升级 kubeadm

# CentOS / RHEL
yum install -y kubeadm-1.27.x-0 --disableexcludes=kubernetes

# Ubuntu / Debian
apt-get install -y kubeadm=1.27.x-00

2. 检查升级计划

kubeadm upgrade plan

3. 执行升级

kubeadm upgrade apply v1.27.x

4. 升级 kubelet & kubectl

yum install -y kubelet-1.27.x-0 kubectl-1.27.x-0
systemctl daemon-reload
systemctl restart kubelet

三、升级 Worker 节点(逐台)

⚠️ 生产环境务必 一台一台来

1. 驱逐节点

kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data

2. 升级组件

yum install -y kubeadm-1.27.x-0 kubelet-1.27.x-0 kubectl-1.27.x-0
systemctl daemon-reload
systemctl restart kubelet

3. 恢复节点

kubectl uncordon <node-name>

四、验证升级

kubectl get nodes
kubectl version

所有节点版本应一致,状态为 Ready。


五、其他常见场景

1. 二进制方式安装的 K8s

  • 替换 kube-apiserver / kube-controller / kube-scheduler / kubelet 二进制
  • 重启 systemd 服务
  • 不适用于新手,风险高

2. 云厂商 K8s(ACK / EKS / GKE)

  • 控制台一键升级
  • 不要手动改系统组件

3. 仅升级 kubectl

curl -LO https://dl.k8s.io/release/v1.27.0/bin/linux/amd64/kubectl

六、常见坑

❌ 跨多版本升级
❌ 不备份 etcd
❌ 同时升级多个 worker
❌ 忽略 CNI(Calico / Flannel)兼容性


七、我可以继续帮你

你可以告诉我:

  • kubeadm / 二进制 / 云厂商?
  • 当前版本 → 目标版本?
  • 单节点还是多节点?

我可以直接给你精确命令。

0 踩