少年击剑更吹箫,剑气箫心一例消。这篇文章主要讲述[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)其余节点也参照这种方式进行升级即可,记得挑流量低谷的时候做哦~
推荐阅读
- 在Ubuntu20.04上安装Kubernetes-Kubeadm和Minikube
- Windows or Linux(操作系统有那些作用,要如何选择)
- [kubernetes] POD健康检测和自愈
- TDengine 在蔚来能源系统的落地实践
- [kubernetes] 交付dubbo之zookeeper安装配置
- 四大功能!带你初识 Fabric | 容器网络系列第2期
- [kubernetes] 跨云厂商使用公网IP搭建k8s v1.20.9集群
- WebRTC开源技术平台新版EasyRTC如何获取推流信息列表()
- [kubernetes] 交付dubbo之在jenkins配置多jre版本的maven