ubuntu如何升级k8s版本
导读:Ubuntu上升级 Kubernetes 的标准流程(kubeadm) 一 升级前准备 备份关键数据与配置:优先备份 etcd(强烈建议),以及 /etc/kubernetes/ 目录。etcd 快照示例: ETCDCTL_API=3...
Ubuntu上升级 Kubernetes 的标准流程(kubeadm)
一 升级前准备
- 备份关键数据与配置:优先备份 etcd(强烈建议),以及 /etc/kubernetes/ 目录。etcd 快照示例:
- ETCDCTL_API=3 etcdctl snapshot save /path/to/backup/snapshot.db
–endpoints https://:
–cert /path/to/cert.pem --key /path/to/key.pem --cacert /path/to/ca.pem
- ETCDCTL_API=3 etcdctl snapshot save /path/to/backup/snapshot.db
- 检查集群健康:确保控制面与节点均 Ready,核心组件 Running,无 CrashLoopBackOff/Error 的 Pod。
- 确认升级路径:遵循“相邻次要版本递进”,不支持跨多个次要版本(如 1.22 → 1.24 需先到 1.23);kubectl 与集群版本差距不应超过 1 个次要版本。
- 维护窗口与高可用:选择低峰期;如使用 HAProxy/Keepalived 等前端,确保升级期间健康检查与后端摘除策略正常。
- 容器运行时:自 v1.24 起内置 dockershim 移除,需使用 containerd(或 CRI-O);如使用 Docker,需切换为 containerd 并正确配置 CRI 与 crictl。
二 控制平面节点升级(逐个进行)
- 升级 kubeadm(解除 hold → 安装 → 再加回 hold):
- apt-mark unhold kubeadm
- apt-get update & & apt-get install -y kubeadm=< 目标版本,如 1.29.2-1.1>
- apt-mark hold kubeadm
- 检查升级计划并应用:
- kubeadm upgrade plan(确认可升级到的目标版本与变更)
- kubeadm upgrade apply v< 目标版本> (如需单独控制 etcd,可加 --etcd-upgrade=false)
- 腾空节点(维护前务必执行):
- kubectl drain < 控制面节点名> --ignore-daemonsets --force
- 升级 kubelet 与 kubectl(同法解除 hold → 安装 → 加回 hold):
- apt-mark unhold kubelet kubectl
- apt-get install -y kubelet=< 目标版本> kubectl=< 目标版本>
- apt-mark hold kubelet kubectl
- systemctl daemon-reload & & systemctl restart kubelet
- 恢复节点调度:
- kubectl uncordon < 控制面节点名>
- 验证:
- kubectl get nodes(版本与状态)
- kubectl get pods -n kube-system(核心组件 Running)
三 工作节点升级(逐个进行)
- 腾空节点:
- kubectl drain < 工作节点名> --ignore-daemonsets --force
- 升级 kubeadm(与控制面目标版本保持一致):
- apt-mark unhold kubeadm
- apt-get update & & apt-get install -y kubeadm=< 目标版本>
- apt-mark hold kubeadm
- 执行节点升级(可选,用于同步 kubeadm 节点配置):
- kubeadm upgrade node
- 升级 kubelet 与 kubectl:
- apt-mark unhold kubelet kubectl
- apt-get install -y kubelet=< 目标版本> kubectl=< 目标版本>
- apt-mark hold kubelet kubectl
- systemctl daemon-reload & & systemctl restart kubelet
- 恢复节点调度:
- kubectl uncordon < 工作节点名>
- 验证:
- kubectl get nodes(节点 Ready)
- 业务 Pod 恢复 Running
四 升级后验证与常见问题
- 集群状态:
- kubectl get nodes(所有节点版本与目标一致且 Ready)
- kubectl get pods -A(核心组件与业务 Running,无异常重启)
- 查看日志:journalctl -u kubelet -f(必要时排查 kube-apiserver/controller-manager/scheduler)
- 组件兼容性:
- CNI/CSI/Ingress/Dashboard/Prometheus 等需与目标 K8s 版本兼容,必要时同步升级
- 常见问题与要点:
- 禁止跨多个次要版本;kubectl 与集群版本差距不超过 1
- 自 v1.24 起需使用 containerd(或 CRI-O),并正确配置 CRI 与 crictl
- 升级窗口与 HA 健康检查要提前验证,避免 API 中断
- 如采用外部 etcd,可先单独升级 etcd 后再升级控制面(使用 --etcd-upgrade=false 谨慎控制)
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu如何升级k8s版本
本文地址: https://pptw.com/jishu/762574.html
