centos k8s更新流程是怎样的
CentOS环境下Kubernetes集群更新流程
一、升级前准备
-
备份关键数据
备份etcd数据库(集群状态核心存储)、/etc/kubernetes/目录(配置文件)及/etc/etcd/目录(etcd数据),确保升级失败时可快速恢复。常用命令:ETCDCTL_API=3 etcdctl --endpoints=https://< etcd-ip> :2379 --cacert=/etc/etcd/ca.crt --cert=/etc/etcd/server.crt --key=/etc/etcd/server.key snapshot save /var/lib/etcd/backup/snapshot.db cp -r /etc/kubernetes/ /etc/kubernetes.backup/ cp -r /etc/etcd/ /etc/etcd.backup/
-
检查集群状态
确保所有节点处于Ready
状态,无未完成的Pod调度或异常事件:kubectl get nodes kubectl get pods --all-namespaces
-
确认版本兼容性
Kubernetes仅支持逐次小版本升级(如v1.23→v1.24→v1.25),禁止跨大版本跳跃。通过官方文档确认目标版本与当前版本的兼容性,避免因版本跳过导致组件冲突。 -
配置Kubernetes Repo仓库
在所有节点上更新Kubernetes官方YUM仓库,确保能下载最新版本组件。以CentOS 7为例:cat < < EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
二、升级控制平面节点(Master Node)
-
升级kubeadm工具
在Master节点上,使用YUM安装目标版本的kubeadm(集群升级核心工具):sudo yum update -y kubeadm --disableexcludes=kubernetes
-
查看升级计划
执行kubeadm upgrade plan
命令,检查集群可升级的目标版本及需要更新的组件(如kube-apiserver、kube-controller-manager等),确认升级可行性:sudo kubeadm upgrade plan
-
执行控制平面升级
使用kubeadm upgrade apply
命令升级Master节点的控制平面组件,自动替换旧版本二进制文件并重启服务:sudo kubeadm upgrade apply v< target-version>
-
升级Master节点的kubelet和kubectl
升级Master节点上的kubelet(节点代理)和kubectl(命令行工具)至目标版本,并重启kubelet服务:sudo yum update -y kubelet kubectl --disableexcludes=kubernetes sudo systemctl daemon-reload sudo systemctl restart kubelet
-
解除Master节点保护
升级完成后,将Master节点标记为可调度,允许新Pod调度至该节点:kubectl uncordon < master-node-name>
三、升级工作节点(Worker Node)
-
逐个升级工作节点
为避免集群不可用,每次仅升级一个工作节点,待其恢复后再升级下一个节点。 -
标记节点为不可调度并驱逐Pod
使用cordon
命令将节点标记为不可调度,再通过drain
命令驱逐节点上的所有Pod(--ignore-daemonsets
忽略DaemonSet管理的Pod,--delete-emptydir-data
清理临时数据):kubectl cordon < worker-node-name> kubectl drain < worker-node-name> --ignore-daemonsets --delete-emptydir-data
-
升级工作节点的kubeadm、kubelet和kubectl
在工作节点上执行与Master节点相同的步骤,升级kubeadm、kubelet和kubectl至目标版本,并重启kubelet服务:sudo yum update -y kubeadm kubelet kubectl --disableexcludes=kubernetes sudo systemctl daemon-reload sudo systemctl restart kubelet
-
执行节点升级
使用kubeadm upgrade node
命令升级工作节点的组件,同步至集群最新版本:sudo kubeadm upgrade node
-
恢复节点调度
升级完成后,将工作节点标记为可调度,等待节点状态变为Ready
:kubectl uncordon < worker-node-name>
四、升级后验证
-
检查集群状态
确认所有节点状态为Ready
,无异常事件:kubectl get nodes
-
检查Pod运行状态
查看kube-system命名空间下的核心组件(如kube-apiserver、kube-controller-manager、kube-scheduler)及业务Pod是否正常运行:kubectl get pods --all-namespaces
-
验证功能正常性
部署一个测试Pod(如nginx),检查是否能正常调度、启动及访问,确保升级未影响业务功能:kubectl run test-pod --image=nginx --restart=Never kubectl get pod test-pod kubectl port-forward test-pod 8080:80
五、注意事项
- 版本兼容性:严格遵循逐次小版本升级路径,避免跨版本跳跃导致组件不兼容。
- 备份与回滚:升级前务必备份关键数据,若升级失败可通过备份恢复至原版本。
- 滚动升级:逐个节点升级,确保集群始终有足够容量承载业务负载。
- 监控与日志:升级过程中实时监控集群状态(如CPU、内存、网络),查看组件日志(
journalctl -xeu kubelet
)排查异常。 - 自定义组件适配:若使用了Calico、Flannel等第三方网络插件或自定义CRD,需参考插件文档升级至兼容版本,避免功能失效。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos k8s更新流程是怎样的
本文地址: https://pptw.com/jishu/714925.html