使用kubeadm方式进行kubernetesHA版本升级
#https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-15/
#https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/
#https://github.com/kubernetes/kubeadm/issues/1322
#https://github.com/kubernetes/kubernetes/pull/69366
#https://juejin.im/post/5c9ce517e51d452b837c959e
#获取最新kubeadm最新版本
yum list --showduplicates kubeadm --disableexcludes=kubernetes
#升级第一个控制节点(master01执行)
#安装最新版本kubeadm
yum install -y kubeadm-1.15.0-0 --disableexcludes=kubernetes
#验证下载是否有效并具有预期版本
kubeadm version
#获取升级计划
kubeadm upgrade plan
#选择要升级到的版本,然后运行相应的命令
kubeadm upgrade apply v1.15.0
#手动升级您的CNI提供程序插件
#按需操作
#升级控制端上的kubelet和kubectl
yum install -y kubelet-1.15.0-0 kubectl-1.15.0-0 --disableexcludes=kubernetes
#重启kubelet
systemctl restart kubelet
#升级其他控制节点(其他master节点执行)
#与第一个控制节点操作相同但使用:
kubeadm upgrade node 代替 kubeadm upgrade apply
#查看kubeadm-config
kubectl -n kube-system get cm kubeadm-config -oyaml
#编辑添加内容
ClusterStatus: |
nodeRegistration:
criSocket: /var/run/dockershim.sock
apiEndpoints:
master01:
advertiseAddress: 192.168.10.241
bindPort: 6443
master02:
advertiseAddress: 192.168.10.242
bindPort: 6443
master03:
advertiseAddress: 192.168.10.243
bindPort: 6443
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterStatus
#如果没有上面内容则执行kubeadm upgrade node会报错:
unable to fetch the kubeadm-config ConfigMap: failed to get node registration: node master02 doesn't have kubeadm.alpha.kubernetes.io/cri-socket annotation
unable to fetch the kubeadm-config ConfigMap: failed to getAPIEndpoint: failed to get APIEndpoint information for this node
#升级工作节点(node节点执行)
#安装最新版本kubeadm
yum install -y kubeadm-1.15.0-0 --disableexcludes=kubernetes
#排空node节点(master端执行)
#通过将有负载的节点标记为不可调度并逐出工作负载来准备节点以进行维护
kubectl drain node01 --ignore-daemonsets
#升级kubelet配置
kubeadm upgrade node
#升级kubelet和kubectl
yum install -y kubelet-1.15.x-0 kubectl-1.15.x-0 --disableexcludes=kubernetes
#重启kubelet
systemctl restart kubelet
#恢复节点(master端执行)
kubectl uncordon node01