[kubernetes] kubernetes集群平滑升级
Posted 运维少年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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
下载后,上传至需要升级的节点。
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的分布情况
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)其余节点也参照这种方式进行升级即可,记得挑流量低谷的时候做哦~
以上是关于[kubernetes] kubernetes集群平滑升级的主要内容,如果未能解决你的问题,请参考以下文章
Docker&Kubernetes ❀ Kubernetes集群实践与部署笔记知识点梳理
Docker&Kubernetes ❀ Kubernetes集群实践与部署笔记知识点梳理
Kubernetes 集群中的 Kafka - 如何从 Kubernetes 集群外部发布/使用消息