背景:外部部署的三节点etcd, kubeadm部署双master,多node的k8s环境。由于版本迭代原因需要升级k8s
思路:
1、etcd数据备份(防止升级失败导致数据丢失)
2、升级master节点
3、升级node节点
4、验证集群状态
etcdctl --cacert=/opt/kubernetes/ssl/ca.pem --cert=/opt/kubernetes/ssl/server.pem --key=/opt/kubernetes/ssl/server-key.pem --endpoints=https://192.168.1.36:2379 snapshot save /data/etcd_backup_dir/etcd-snapshot-`date +%Y%m%d`.db2、升级master节点
1、查看kubeadm版本,并更新 yum list --showduplicates kubeadm yum install -y kubeadm-1.23.x-0 2、验证升级计划 kubeadm upgrade plan 3、选择要升级到的目标版本(apiserver、controller-manager、scheduler、kube-proxy) kubeadm upgrade apply v1.23.x 4、node标记为不可调度,腾空节点 kubectl drain--ignore-daemonsets 5、升级kubelet 和 kubectl yum install -y kubelet-1.23.x-0 kubectl-1.23.x-0 6、重启 sudo systemctl daemon-reload sudo systemctl restart kubelet 7、将节点标记为可调度,让其重新上线 kubectl uncordon
升级其他控制节点与第一个控制面节点相同,但是使用
kubeadm upgrade node
:
1、更新kubeadm yum install -y kubeadm-1.23.x-0 2、对于工作节点,下面的命令会升级本地的 kubelet 配置 kubeadm upgrade node 3、腾空节点 kubectl drain4、验证集群的状态--ignore-daemonsets 4、升级 kubelet 和 kubectl yum install -y kubelet-1.23.x-0 kubectl-1.23.x-0 5、重启 kubelet sudo systemctl daemon-reload sudo systemctl restart kubelet 6、取消对节点的保护 kubectl uncordon
kubectl get nodes
kubeadm upgrade 原理(来自k8s官网):



