Kubernetes集群迁移是将现有集群(如CentOS环境下的集群)迁移至同一或不同环境的CentOS节点的过程,核心目标是实现业务无中断、数据一致性和集群稳定性。以下是详细的迁移流程及关键操作:
备份关键数据
迁移前必须备份集群核心数据,确保故障时可快速恢复:
etcdctl snapshot save /var/lib/etcd/backup/snapshot.db # 默认etcd数据目录为/var/lib/etcd
cp /root/.kube/config /root/.kube/config.backup
/etc/kubernetes/manifests/(静态Pod定义)、/etc/kubernetes/pki/(证书)等目录。检查兼容性
更新系统及仓库
sudo yum update -y
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF
Master节点是集群控制平面,迁移需优先确保控制平面稳定性。
升级kubeadm工具
kubeadm是升级集群的核心工具,需先升级至目标版本:
sudo yum update -y kubeadm
检查升级计划
通过kubeadm upgrade plan命令查看可升级的版本及所需操作,确认兼容性:
sudo kubeadm upgrade plan
输出会显示当前版本、可升级的目标版本及兼容性检查结果。
执行Master升级
使用kubeadm upgrade apply命令升级Master节点(替换<目标版本>,如v1.28.2):
sudo kubeadm upgrade apply v1.28.2
yes继续。sudo systemctl restart kube-apiserver kube-controller-manager kube-scheduler
升级kubelet和kubectl
sudo yum update -y kubelet
sudo systemctl daemon-reload
sudo systemctl restart kubelet
sudo yum update -y kubectl
Worker节点负责运行Pod,迁移需确保业务无中断。
标记节点为不可调度
避免升级过程中新Pod调度到该节点:
kubectl cordon <节点名称> # 如 kubectl cordon k8s-node01
驱逐节点上的Pod
将节点上的Pod安全驱逐至其他节点(--ignore-daemonsets忽略DaemonSet管理的Pod,--force强制驱逐):
kubectl drain <节点名称> --ignore-daemonsets --force
升级Worker节点组件
操作与Master节点一致:
sudo yum update -y kubelet kubectl
sudo systemctl daemon-reload
sudo systemctl restart kubelet
升级Worker节点
使用kubeadm upgrade node命令升级Worker节点(需指定Master节点的Kubeadm版本):
sudo kubeadm upgrade node
恢复节点可调度
升级完成后,允许节点重新接收Pod调度:
kubectl uncordon <节点名称>
检查集群状态
确认所有节点状态为Ready:
kubectl get nodes
检查Pod运行状态
确认所有Pod正常运行(Running状态):
kubectl get pods --all-namespaces
验证业务功能
访问集群内的业务服务(如通过Ingress或NodePort),确认业务无中断。
通过以上步骤,可实现CentOS上Kubernetes集群的安全迁移,确保业务连续性和数据完整性。迁移过程中若遇到问题,可参考Kubernetes官方文档或社区资源排查解决。