[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的分布情况

[kubernetes]

2)查看node

[kubernetes]

3)删除node

kubect delete node host22.yunwei.com

4)再次查看node

[kubernetes]

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

[kubernetes]


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]


04 验证集群状态

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

[kubernetes]

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

[kubernetes]


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

以上是关于[kubernetes] kubernetes集群平滑升级的主要内容,如果未能解决你的问题,请参考以下文章

Docker&Kubernetes ❀ Kubernetes集群实践与部署笔记知识点梳理

Docker&Kubernetes ❀ Kubernetes集群实践与部署笔记知识点梳理

Kubernetes 集群中的 Kafka - 如何从 Kubernetes 集群外部发布/使用消息

[K8s]Kubernetes-集群管理

快速搭建kubernetes高可用集群(3master+3worker+负载均衡)

使用Kubernetes管理Kubernetes集群