温馨提示×

如何升级Debian上K8s

小樊
47
2026-09-05 09:19:03
栏目: 智能运维

下面按常见生产场景给你一个清晰、可落地的 Debian 上升级 Kubernetes(kubeadm 集群)流程。如果你用的是 k3s / microk8s / 云托管 K8s,方式会不同,可以再告诉我。


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

1. 查看当前版本

kubectl version --short
kubeadm version

2. 确认可升级路径

必须逐个 minor 版本升级

1.26 → 1.27 → 1.28

不能跨版本(如 1.26 → 1.29)

官方对照表: https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/upgrade/

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. 更新 apt 源

sudo apt update
apt-cache policy kubeadm

2. 安装目标版本 kubeadm

例如升级到 1.28.4

sudo apt install -y kubeadm=1.28.4-1.1 --allow-downgrades

3. 验证升级计划

sudo kubeadm upgrade plan

4. 执行控制面升级

sudo kubeadm upgrade apply v1.28.4

5. 升级 kubelet & kubectl

sudo apt install -y kubelet=1.28.4-1.1 kubectl=1.28.4-1.1
sudo systemctl restart kubelet

三、升级 Worker 节点(逐个进行)

1. 驱逐节点

kubectl drain <node-name> --ignore-daemonsets

2. 升级节点组件

sudo apt install -y kubeadm=1.28.4-1.1
sudo kubeadm upgrade node
sudo apt install -y kubelet=1.28.4-1.1
sudo systemctl restart kubelet

3. 恢复调度

kubectl uncordon <node-name>

四、升级后检查

kubectl get nodes
kubectl get pods -A

确认:

  • 所有 Node 版本一致
  • 系统组件 Running
  • 业务 Pod 正常

五、Debian 常见坑提醒

不要同时升级 Docker / containerd ✅ 若使用 containerd:

containerd --version

必要时同步升级

✅ Debian 12 推荐:

  • containerd ≥ 1.6
  • 关闭 swap
sudo swapoff -a

六、如果是 k3s(Debian)

curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.28.4+k3s1 sh -

七、我可以进一步帮你

你可以告诉我:

  1. Debian 版本(11 / 12)
  2. K8s 当前版本
  3. 单节点 / 多节点
  4. 是否生产环境

我可以给你精确到命令的升级方案

0