如何升级centos k8s版本
如何在CentOS上升级Kubernetes(K8s)版本
升级Kubernetes集群需遵循“准备充分、渐进执行、验证到位”的原则,以下是基于kubeadm
工具的标准流程及关键注意事项:
一、升级前准备:规避风险的核心步骤
-
备份关键数据
备份集群配置(/etc/kubernetes/
目录)和etcd数据(etcd是K8s的核心存储组件),确保升级失败时可快速恢复。etcd备份命令示例:etcdctl snapshot save /data/etcd/etcd_bak.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
-
检查集群健康状态
确保集群无未解决问题:- 控制平面组件状态:
kubectl get pods -n kube-system -l component=kube-apiserver
(需全部为Running
); - 节点状态:
kubectl get nodes
(所有节点需为Ready
); - Pod运行状态:
kubectl get pods --all-namespaces --field-selector status.phase!=Running
(无CrashLoopBackOff
或Error
状态的Pod)。
- 控制平面组件状态:
-
确认升级路径
Kubernetes不支持跨多个次要版本跳跃升级(如从1.22直接升级到1.25),必须遵循“相邻次要版本递进”规则(如1.22→1.23→1.24→1.25)。可通过kubectl version
查看当前版本,在官方升级文档中确认目标版本的兼容性。 -
检查组件兼容性
确保周边组件与目标K8s版本匹配:- 容器运行时:Docker 1.24+已弃用,需切换为
containerd
(K8s 1.25对应containerd 1.6+
); - 网络插件:Calico 3.24支持K8s 1.25,Flannel 0.20.0及以上支持K8s 1.25;
- 工具链:
kubectl
版本需与集群版本相差不超过1个次要版本(如集群1.24,kubectl
需为1.23-1.25)。
- 容器运行时:Docker 1.24+已弃用,需切换为
-
配置Kubernetes Repo仓库
在所有节点上配置官方Kubernetes repo,确保能下载新版本软件包:cat < < EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF
二、核心升级步骤:以kubeadm部署的集群为例
1. 升级Master节点(控制平面)
(1)升级kubeadm工具
在Master节点上,使用yum
安装新版本kubeadm
(以升级到1.25为例):
sudo yum install -y kubeadm-1.25.0-00 --disableexcludes=kubernetes
(2)检查升级计划
运行kubeadm upgrade plan
,确认集群可升级的目标版本及需要修改的配置:
kubeadm upgrade plan
# 输出示例:建议升级到v1.25.0,当前版本v1.24.3
(3)执行控制平面升级
使用kubeadm upgrade apply
升级控制平面组件(kube-apiserver
、kube-controller-manager
、kube-scheduler
):
sudo kubeadm upgrade apply v1.25.0
升级完成后,系统会提示“升级成功”,控制平面组件会自动重启。
(4)升级kubelet和kubectl
在Master节点上升级kubelet
和kubectl
:
sudo yum install -y kubelet-1.25.0-00 kubectl-1.25.0-00 --disableexcludes=kubernetes
sudo systemctl daemon-reload
sudo systemctl restart kubelet
(5)解除Master节点保护
升级后,将Master节点标记为可调度(允许Pod调度到Master):
kubectl uncordon <
master-node-name>
2. 升级Worker节点(工作节点)
(1)逐个升级工作节点
为避免集群中断,每次仅升级1个Worker节点,重复以下步骤:
- 腾空节点:将节点标记为不可调度,并驱逐所有Pod(DaemonSet管理的Pod会自动重建):
kubectl drain < worker-node-name> --ignore-daemonsets
- 升级kubeadm:在工作节点上安装新版本
kubeadm
(与Master版本一致):sudo yum install -y kubeadm-1.25.0-00 --disableexcludes=kubernetes
- 升级kubelet和kubectl:同Master节点步骤,升级
kubelet
和kubectl
并重启服务。
(2)升级节点组件
在Master节点上,使用kubeadm upgrade node
升级工作节点的组件:
sudo kubeadm upgrade node
(3)解除节点保护
升级完成后,将工作节点标记为可调度:
kubectl uncordon <
worker-node-name>
(4)验证节点状态
等待节点状态变为Ready
(kubectl get nodes
),确认Pod恢复正常运行(kubectl get pods --all-namespaces
)。
三、升级后验证:确保集群稳定性
-
检查集群状态
kubectl get nodes # 所有节点应为Ready状态 kubectl get pods -A # 所有Pod应为Running状态
-
检查组件日志
查看K8s组件日志,确认无错误信息:sudo journalctl -u kubelet -f sudo journalctl -u kube-apiserver -f
-
测试业务功能
访问集群内的业务Pod(如curl http://< pod-ip> :< port>
),确认业务正常运行。
四、注意事项:避免升级失败的“坑”
- 禁止跳过版本:直接跨多个次要版本升级(如1.23→1.25)可能导致组件不兼容,必须逐步升级。
- 不要在业务高峰期操作:升级过程中可能出现短暂的服务不可用,建议在低峰期进行。
- 保留旧版本备份:升级前备份
/etc/kubernetes/
和/var/lib/etcd/
,以便快速回滚。 - 监控集群状态:升级过程中使用Prometheus、Grafana等工具监控集群指标(如CPU、内存、Pod状态),及时处理异常。
通过以上步骤,可确保CentOS上的Kubernetes集群平稳升级到目标版本,同时保障业务连续性。升级前务必在测试环境验证流程,降低生产环境风险。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何升级centos k8s版本
本文地址: https://pptw.com/jishu/727497.html