背景:
线上kubernetes环境应用kubeadm搭建.过后应该是1.15的kubeadm搭建的。稳固运行了近两年的工夫。其中降级了一次大版本从1.15降级到1.16。进行过屡次小版本升级。当初的版本为1.16.15。两头也曾想降级过版本到更高的版本,然而降级master的时候出现异常了,还好是三节点的master集群,就复原到了1.16的版本。始终没有进行更高版本的降级。昨天总算是对集群下手降级了……
集群配置
主机名 | 零碎 | ip |
---|---|---|
k8s-vip | slb | 10.0.0.37 |
k8s-master-01 | centos7 | 10.0.0.41 |
k8s-master-02 | centos7 | 10.0.0.34 |
k8s-master-03 | centos7 | 10.0.0.26 |
k8s-node-01 | centos7 | 10.0.0.36 |
k8s-node-02 | centos7 | 10.0.0.83 |
k8s-node-03 | centos7 | 10.0.0.40 |
k8s-node-04 | centos7 | 10.0.0.49 |
k8s-node-05 | centos7 | 10.0.0.45 |
k8s-node-06 | centos7 | 10.0.0.18 |
Kubernetes降级过程
1. 参考官网文档
参照:https://kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
https://v1-17.docs.kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
kubeadm 创立的 Kubernetes 集群从 1.16.x 版本升级到 1.17.x 版本,以及从版本 1.17.x 降级到 1.17.y ,其中 y > x
2. 确认可降级版本与降级计划
yum list --showduplicates kubeadm --disableexcludes=kubernetes
因为我的kubeadm版本是1.16.15 那我只能先降级到1.17.15 而后从1.17.15降级到1.17.17(先不思考降级更高版本)。master节点有k8s-master-01 k8s-master-02 k8s-master-03三个节点,集体习惯个别不喜爱先动第一个,就间接从第三个节(sh-master-03)点动手了……
3. 降级k8s-master-03节点管制立体
yum install kubeadm-1.17.15-0 --disableexcludes=kubernetes
sudo kubeadm upgrade plan
嗯 能够降级到1.17.17?试一下
kubeadm upgrade apply v1.17.17
不能降级到1.17.17 然而能够到1.17.16?然而要先降级kubeadm。怎么会是这样呢?如下是能够1.y到1.y+1版本的。
kubeadm upgrade apply v1.17.15
yum install -y kubelet-1.17.15-0 kubectl-1.17.15-0 --disableexcludes=kubernetes
systemctl daemon-reload
sudo systemctl restart kubelet
嗯还是没有搞明确怎么就还是到1.17.16版本了,无伤大雅了。就先这样了!
注:当然了为了防止出现问题,应该是先把 /etc/kubernetes文件门路下配置文件备份一下!
4. 降级其余管制立体(k8s-master-02 k8s-master-03)
其余两个master节点都执行一下命令:
yum install -y kubeadm-1.17.15-0 --disableexcludes=kubernetes
kubeadm upgrade node
yum install -y kubelet-1.17.15-0 kubectl-1.17.15-0 --disableexcludes=kubernetes
systemctl daemon-reload
sudo systemctl restart kubelet
登陆任意一台master节点:
[root@k8s-master-03 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master-01 Ready master 297d v1.17.15
k8s-master-02 Ready master 297d v1.17.15
k8s-master-03 Ready master 297d v1.17.16-rc.0
k8s-node-01 Ready node 549d v1.16.15
k8s-node-02 Ready node 2d5h v1.16.15
k8s-node-03 Ready node 549d v1.16.15
k8s-node-04 Ready node 547d v1.16.15
k8s-node-05 Ready node 547d v1.16.15
k8s-node-06 Ready node 192d v1.16.15
test-ubuntu-01 Ready,SchedulingDisabled <none> 47h v1.16.15
tm-node-002 Ready node 154d v1.16.15
tm-node-003 Ready <none> 99d v1.16.15
5. 持续降级小版本到1.17.17
同理,反复以上的步骤,小版本升级到1.17.17
kubectl get nodes -o wide
留神:以上master-02 master-03管制立体节点降级疏忽了凌空节点步骤
6. work节点的降级
所有work节点执行:
注:演示在k8s-node-03节点执行
yum install kubeadm-1.17.17 kubectl-1.17.17 kubelet-1.17.17 --disableexcludes=kubernetes
将节点设置为不可调度,并凌空节点:
kubectl drain k8s-node-03 --ignore-daemonsets
kubeadm upgrade node
sudo systemctl daemon-reload
sudo systemctl restart kubelet
kubectl uncordon k8s-node-03
kubectl get nodes -o wide
注:后截的图already疏忽,就看后果……,就先降级几个节点了。其余几点节点有工夫再进行降级,预计也差不多,如有什么异样再进行整顿剖析!
7. 降级与应用中呈现的一些小问题
1. clusterrole
还是有些小异样,比方:我的controller-manager的clusterrole system:kube-controller-manager的权限怎么就有问题了?
不晓得过后是不是因为只降级了两个节点k8s-master-01节点造成的。在呈现这个问题的时候我是降级了k8s-master-01节点,而后删除了clusterrole system:kube-controller-manager,而后把我kubernetes1.21的clusterrole搞过来apply了
kubectl get clusterrole system:kube-controller-manager -o yaml > 1.yaml
kubectl get clusterrole system:kube-controller-manager -o yaml >clusterrole.yaml
kubectl apply -f 1.yaml
反正貌似就是解决了….clusterrole这货色看看认真整一下。最近反正是有点懵了……
2. flannel的异样
还有一个问题是flannel的:
我的集群是1.15降级上来的。始终是没有问题的,然而新减少work节点后,调配到新节点的带探针的就会有各种诡异的问题.,要么探测不通过,要么重启反正各种问题…..怎么回事呢?
狐疑了一下flannel.登陆github flannel仓库看了一下:
看了一下我的集群的flannel版本还都是v0.11。不论他了先降级一下flannel吧……
kubectl delete -f XXX.yaml(老的flannel插件配置文件)
官网下载kube-flannel.yaml文件
批改network
注:当然了如果还是1.16也要批改一下rbac的 apiversion.
kubectl apply -f kube-flannel.yaml
批改后是根本没有呈现以往探针失败重启的景象了。
3. Prometheus的报错
kubernetes版本对应Prometheus的版本:
嗯我的是晚期的0.4分支,kubernetes1.17还能够用。不过control-manager scheduler的报警都出现异常问题了……参照https://duiniwukenaihe.github.io/2021/05/14/Kubernetes-1.20.5-upgrade1.21.0%E5%90%8E%E9%81%97%E7%97%87/批改kube-controller-manage kube-scheduler配置文件。当然了。我如果降级到1.18或者更高的版本就刺激了…..的切换分支进行重新配置还是什么呢?
后记:
- 尽量去参考官网文档
- 记得降级网络组件
- api如有变动,记得批改相干组件version或者配置文件
发表回复