當我們遇到K8S有漏洞的時候,或者為了滿足需求,有時候可能會需要升級或者降級版本,
為了減少對業務的影響,盡量選擇在業務低谷的時候來升級:
首先准備好文件:我這里選擇的是內網文件服務器上下載的,請自行下載所需的k8s源文件:3
這里演示更換一個節點:7-21
查看版本:將7-21更換成1.15.2
# cd /opt/src
# wget http://192.168.1.60:8080/day1/kubernetes-server-linux-amd64-v1.15.2.tar.gz
# tar -zxf kubernetes-server-linux-amd64-v1.15.2.tar.gz
# cd ..
# cp -r kubernetes /opt/kubernetes-v1.15.2
# cd kubernetes-v1.15.2/
# rm -rf kubernetes-src.tar.gz
# cd server/bin/
# rm -rf *.tar
# rm -rf *tag
# mkdir cert conf
# cp /opt/kubernetes-v1.15.4/server/bin/cert/* ./cert/
# cp /opt/kubernetes-v1.15.4/server/bin/conf/* ./conf/
# cp /opt/kubernetes-v1.15.4/server/bin/*.sh /opt/kubernetes-v1.15.2/server/bin/
然后在nginx上摘除api-server的四層負載:7-11,7-12
# vi /etc/nginx/nginx.conf
把我們要升級的apiserver節點注釋掉:
# nginx -t
# nginx -s reload
准備好后,摘除node,先看下哪個node上跑的pod少:我們這里一樣多,那我們就搞7-21,
# kubectl delete node hdss7-21.host.com
我們的coredns已經從node7-21遷移到了7-22上,接下來我們更換軟連接:
# rm -rf kubernetes
# ln -s /opt/kubernetes-v1.15.2 /opt/kubernetes
然后重啟使用supervisor重啟服務:生產上記得一個一個重啟,我們這里為了方便,直接重啟所有:
# supervisorctl restart all
啟動成功后,查看版本:
可以看到node版本已經從1.15.4變更為了1.15.2,並且kubelet已經自動幫我們把節點加入到了集群,然后打開nginx負載,即可。