[kubernetes] kubernetes集群平滑升级

少年击剑更吹箫,剑气箫心一例消。这篇文章主要讲述[kubernetes] kubernetes集群平滑升级相关的知识,希望能为你提供帮助。
        最近打算把kubernetes进行一次升级,从kubernetes v1.15.2  升级到kubernets v1.16.0,为啥版本这么老呢,因为这个是我参照一套视频去操作的,这里只是作为个人笔记记录一下。
        先说一下集群的情况,集群使用二进制部署起来的,所有的部署目录都采用了软连接的方式,这样在升级的时候比较方便。


??01 准备前工作??
1)下载kubernetes  v15.4源码包。
下载地址:https://dl.k8s.io/v1.16.0/kubernetes-server-linux-amd64.tar.gz
下载后,上传至需要升级的节点。
【[kubernetes] kubernetes集群平滑升级】

2)创建目录,并解压升级包

mkdir /opt/kubernetesv1.16.0/
tar xf kubernetes-server-linux-amd64.tar.gz -C /opt/kubernetes-v1.16.0/
cd /opt/kubernetes-v1.16.0/kubernetes/
mv * ../
rm -r kubernetes

3)删除没有用的软件包
cd /opt/kubernetes-v1.16.0/
rm -f kubernetes-src.tar.gz
cd bin/
rm *.tar *_tag

4)复制现有集群的配置文件
cd /opt/kubenetes-v1.16.0/server/bin
mkdir conf cert
cp -a /opt/kubernetes/server/bin/conf/* conf/
cp -a /opt/kubernetes/server/bin/cert/* cert/
cp -a /opt/kubernetes/server/bin/*.sh .

5)将节点从nginx 的backend中删除,避免在升级期间有流量调度过来
vim nginx.conf
stream
upstream kube-apiserver
server 192.168.122.21:6443max_fails=3 fail_timeout=30s;
# 注释server 192.168.122.22:6443max_fails=3 fail_timeout=30s;


vim od.com.conf
upstream default_backend_traefik
server 192.168.122.21:81max_fails=3 fail_timeout=10s; # 此ip为node ip+81端口,每个node节点都需要加上
# 注释server 192.168.122.22:81max_fails=3 fail_timeout=10s;

# 重载nginx
nginx -s reload



??02  删除需要删除的节点??
1)查看目前pod的分布情况

2)查看node

3)删除node
kubect delete node host22.yunwei.com

4)再次查看node

5)查看pod是否已经迁移,可以看到已经没有pod在host22了



??03 升级kubernetes??
?1)删除旧版本的软连接?
rm /opt/kubernetes

???2)创建新版本的软连接
ln -s /opt/kubernetes-v1.16.0/ /opt/kubernetes

3)重启服务
supervisorctl restart kube-apiserver-7-22 kube-controller-manager-7-22 kube-kubelet-7-22 kube-proxy-7-22 kube-scheduler-7-22

ps:如果kubectl服务不能重启成功,则kill  掉它,supervisor会自动把它拉起来。



??04  验证集群状态??
1)查看node,可以看到已经有一个node版本变为v1.16.0了

2)这时候已经有pod在新的node上面运行了,如果没有,可以删除一个pods,控制器会自动再拉一个pod起来,这时候应该就会被调度到新加入集群的node了



3)其余节点也参照这种方式进行升级即可,记得挑流量低谷的时候做哦~

    推荐阅读