最近打算把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

下载后,上传至需要升级的节点。


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:6443 max_fails=3 fail_timeout=30s;
# 注释 server 192.168.122.22:6443 max_fails=3 fail_timeout=30s;
}

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


02 删除需要删除的节点

1)查看目前pod的分布情况

[kubernetes] kubernetes集群平滑升级_nginx

2)查看node

[kubernetes] kubernetes集群平滑升级_linux_02

3)删除node

kubect delete node host22.yunwei.com

4)再次查看node

[kubernetes] kubernetes集群平滑升级_软连接_03

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

[kubernetes] kubernetes集群平滑升级_nginx_04


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会自动把它拉起来。

[kubernetes] kubernetes集群平滑升级_软连接_05


04 验证集群状态

1)查看node,可以看到已经有一个node版本变为v1.16.0了

[kubernetes] kubernetes集群平滑升级_nginx_06

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

[kubernetes] kubernetes集群平滑升级_软连接_07


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