k8s-v1.15升级v1.16

环境

操作系统CentOS7,这次升级从 1.15.0 升级到 1.16.0。

kubernetes版本的升级主要是升级kubeadm、kubectl和kubelet,升级应遵循以下原则:

1、apiserver保护版本最大,其它功能最多比apiserver小一个小版本号。
2、不能跨小版本升级。

使用下列命令列出可用版本

yum list --showduplicates kubeadm --disableexcludes=kubernetes

升级kubeadm

yum install -y kubeadm-1.16.0-0 --disableexcludes=kubernetes
kubectl drain k8s-master --ignore-daemonsets --force
kubeadm upgrade plan
kubeadm upgrade apply v1.16.0
kubectl uncordon k8s-master
yum install -y kubelet-1.16.0-0 kubectl-1.16.0-0 --disableexcludes=kubernetes
systemctl daemon-reload
systemctl restart kubelet

升级业务节点(同样适用于剩余的其它控制节点)

yum install -y kubeadm-1.16.0-0 --disableexcludes=kubernetes

#在master节点执行
kubectl drain k8s-node-a --ignore-daemonsets --force
kubeadm upgrade node
yum install -y kubelet-1.16.0-0 kubectl-1.16.0-0 --disableexcludes=kubernetes
systemctl daemon-reload
systemctl restart kubelet
 
#在master节点执行
kubectl uncordon k8s-node-a

遇到问题

问题一:kubeadm 升级前检查失败,提示没有控制平面角色

image.png

有两种处理方式

方式一:去除 master 污点和标签,所有升级步骤结束后需要重新配置回来
检查 label
kubectl get nodes --show-labels
删除 label 和 taint
kubectl taint node  node-role.kubernetes.io/master�kubectl label node  node-role.kubernetes.io/master�kubectl label node  node-role.kubernetes.io/master=
检查 label
kubectl get nodes --show-labels
检查是否可以升级
kubeadm upgrade plan

方式二:忽略提示

kubeadm upgrade plan --ignore-preflight-errors=ControlPlaneNodesReady
问题二:升级完后节点 notready
image.png
处理方式:
flannel 插件中缺少版本信息,在其 configmap 中添加,然后删除所有 flannel pod
查看 cm
kubectl get configmap kube-flannel-cfg -o yaml -n kube-syste
编辑
kubectl edit configmap kube-flannel-cfg -n kube-syste
image.png

问题三:个别 pod 起不来,日志提示权限不够

处理方式:
kubectl get pods -A -owide 发现 pod 调度到了 master 上。是由于前面删除了 master 污
点造成的。重新打上污点删除已调度 pod 后恢复正常。

你可能感兴趣的:(k8s-v1.15升级v1.16)