在实际生产环境中,部署好的集群稳定就行了,但是,如果需要使用到新的功能或当前版本出现了严重的漏洞,都建议做升级,本教程是将node节点从v1.15.10版本平滑升级到v1.15.12版本,如果升级到相对应的版本后,发现不稳定的情况,也可以通过相同的方法进行降级,不管是升级还是降级,都需要一台升级/降级好后再对下一台进行操作,不建议一起进行

1.查看原集群的Node节点的版本号

在master上(mfyxw30.mfyxw.com或mfyxw40.mfyxw.com)任意一台主机执行命令

[root@mfyxw30 ~]# kubectl get nodes

2.将要升级的版本上传到node节点上并解压

在mfyxw30.mfyxw.com主机上执行

rz命令(上传)和sz命令(下载)都需要安装一个lrzsz的rpm包

[root@mfyxw30 ~]# rz -y
[root@mfyxw30 ~]# mkdir -p /opt/v1512
[root@mfyxw30 ~]# tar xf kubernetes-server-linux-amd64-v1.15.12.tar.gz -C /opt/v1512
[root@mfyxw30 ~]# mv /opt/v1512/kubernetes/ /opt/kubernetes-v1.15.12
[root@mfyxw30 ~]# rm -fr /opt/v1512/
[root@mfyxw30 ~]# ls -l /opt/

3.清理kubernetes-v1.15.12目录中的 *.tar 和 *._tag文件

在mfyxw30.mfyxw.com主机上分行

[root@mfyxw30 ~]# cd /opt/kubernetes-v1.15.12/
[root@mfyxw30 kubernetes-v1.15.12]# rm -fr *.tar.gz
[root@mfyxw30 kubernetes-v1.15.12]# cd server/bin/
[root@mfyxw30 bin]# rm -fr *.tar
[root@mfyxw30 bin]# rm -fr *.*_tag

4.在kubernetes-v1.15.12的bin目录下创建conf目录和cert目录

在mfyxw30.mfyxw.com主机执行

[root@mfyxw30 ~]# mkdir -p /opt/kubernetes-v1.15.12/server/bin/{conf,cert}

5.将旧版本的k8s的证书文件,配置文件,sh文件都复制到新版本中

在mfyxw30.mfyxw.com主机上执行

[root@mfyxw30 ~]# cd /opt/kubernetes-v1.15.10/server/bin
[root@mfyxw30 bin]# cp -r conf/* /opt/kubernetes-v1.15.12/server/bin/conf/
[root@mfyxw30 bin]# cp -r cert/* /opt/kubernetes-v1.15.12/server/bin/cert/
[root@mfyxw30 bin]# cp -r /opt/kubernetes-v1.15.10/server/bin/*.sh /opt/kubernetes-v1.15.12/server/bin/
[root@mfyxw30 bin]# cp -r /opt/kubernetes-v1.15.10/server/conf /opt/kubernetes-v1.15.12/server/
[root@mfyxw30 bin]# ls /opt/kubernetes-v1.15.12/server/bin/conf/
[root@mfyxw30 bin]# ls /opt/kubernetes-v1.15.12/server/bin/cert/
[root@mfyxw30 bin]# ls /opt/kubernetes-v1.15.12/server/bin
[root@mfyxw30 bin]# ls /opt/kubernetes-v1.15.12/server/conf/

准备工作已经完成,现在下面就要准备从v1.15.10平滑升级到v1.15.12,前提是要选择流量低的时候进行,每个公司的流量高低都不尽相同,请根据实际情况来决定,在升级/降级的时候,需要发布一则消息出去,告知其它人。

6.查看下pod节点的情况

在mfyxw30.mfyxw.com主机上执行

[root@mfyxw30 ~]# kubectl get pod -n kube-system -o wide

从查询得的pod可以看到,在mfyxw30.mfyxw.com主机上运行的Pod比较少,就先升级/降级此node节点

7.将四层和七层代理进行注释(删除某台node节点就注释某个对应的IP地址)

分别在mfyxw10.mfyxw.com和mfyxw20.mfyxw.com上执行,以mfyxw10主机为例

[root@mfyxw10 ~]# vi /etc/nginx/nginx.conf

[root@mfyxw10 ~]# cat > /etc/nginx/conf.d/od.com.conf << EOF
upstream default_backend_traefik {
#server 192.168.80.30:81 max_fails=3 fail_timeout=10s;
server 192.168.80.40:81 max_fails=3 fail_timeout=10s;
}
server {
server_name *.od.com; location / {
proxy_pass http://default_backend_traefik;
proxy_set_header Host \$http_host;
proxy_set_header x-forwarded-for \$proxy_add_x_forwarded_for;
}
}
EOF

重新启动nginx

[root@mfyxw10 ~]# nginx -t
[root@mfyxw10 ~]# nginx -s reload

8.将node节点从集群中删除

在master节点mfyxw40.mfyxw.com主机上执行

[root@mfyxw40 ~]# kubectl get nodes
[root@mfyxw40 ~]# kubectl delete node mfyxw30.mfyxw.com
[root@mfyxw40 ~]# kubectl get nodes

9.将kubernetes链接指向新版本的kubernetes-v1.15.12

在mfyxw30.mfyxw.com主机上执行

[root@mfyxw30 ~]# cd /opt/
[root@mfyxw30 opt]# ll
[root@mfyxw30 opt]# rm -fr kubernetes
[root@mfyxw30 opt]# ln -sv kubernetes-v1.15.12 kubernetes
[root@mfyxw30 opt]# ll

10.将k8s集群重新启动

在mfyxw30.mfyxw.com主机上执行

[root@mfyxw30 ~]# systemctl stop supervisord
[root@mfyxw30 ~]# netstat -tanlp | grep "kube"
[root@mfyxw30 ~]# kill -9 58235 #每台机器查询出来的PID不同,请根据实际情况来
[root@mfyxw30 ~]# kill -9 58236 #每台机器查询出来的PID不同,请根据实际情况来
[root@mfyxw30 ~]# netstat -tanlp | grep "kube"
[root@mfyxw30 ~]# systemctl start supervisord
[root@mfyxw30 ~]# supervisorctl status

11.查询集群的node节点(mfyxw30)是否已经升级到最新版

在mfyxw30.mfyxw.com主机上执行

[root@mfyxw30 ~]# kubectl get nodes

12.对node节点打标签

在mfyxw30.mfyxw.com主机执行

[root@mfyxw30 ~]# kubectl label node mfyxw30.mfyxw.com node-role.kubernetes.io/master=
[root@mfyxw30 ~]# kubectl label node mfyxw30.mfyxw.com node-role.kubernetes.io/node=
[root@mfyxw30 ~]# kubectl get nodes

13.将前面在四层和七层代理注释的内容把注释去掉并重启nginx

在mfyxw10.mfyxw.com和mfyxw20.mfyxw.com主机上分别执行

[root@mfyxw10 ~]# cat > /etc/nginx/conf.d/od.com.conf << EOF
upstream default_backend_traefik {
server 192.168.80.30:81 max_fails=3 fail_timeout=10s;
server 192.168.80.40:81 max_fails=3 fail_timeout=10s;
}
server {
server_name *.od.com; location / {
proxy_pass http://default_backend_traefik;
proxy_set_header Host \$http_host;
proxy_set_header x-forwarded-for \$proxy_add_x_forwarded_for;
}
}
EOF

至此,node节点mfyxw30.mfyxw.com已经平滑升级完成,另外的node节点也采用类似的方法来升级/降级

最后来查询一下所有的node节点的版本号是否一致

在master节点上(mfyxw30.mfyxw.com或mfyxw40.mfyxw.com)任意一台执行即可

[root@mfyxw10 ~]# kubectl get nodes

Kubernets二进制安装(19)之集群平滑升级的更多相关文章

  1. K8s之二进制安装高可用集群

    1.环境准备 #二进制部署安装文档# https://github.com/easzlab/kubeasz/blob/master/docs/setup/00-planning_and_overall ...

  2. 基于二进制安装Cloudera Manager集群

    一.环境准备 参考链接:https://www.cnblogs.com/zhangzhide/p/11108472.html 二.安装jdk(三台主机都要做) 下载jdk安装包并解压:tar xvf ...

  3. 二进制安装部署kubernetes集群---超详细教程

    本文收录在容器技术学习系列文章总目录 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以打赏博主一杯咖啡钱 ...

  4. kubernetes实战(十六):k8s高可用集群平滑升级 v1.11.x 到v1.12.x

    1.基本概念 升级之后所有的containers会重启,因为hash值会变. 不可跨版本升级. 2.升级Master节点 当前版本 [root@k8s-master01 ~]# kubeadm ver ...

  5. kubernetes系列03—kubeadm安装部署K8S集群

    本文收录在容器技术学习系列文章总目录 1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm ...

  6. kubernetes(K8S)快速安装与配置集群搭建图文教程

    kubernetes(K8S)快速安装与配置集群搭建图文教程 作者: admin 分类: K8S 发布时间: 2018-09-16 12:20 Kubernetes是什么? 首先,它是一个全新的基于容 ...

  7. 二进制方法-部署k8s集群部署1.18版本

    二进制方法-部署k8s集群部署1.18版本 1. 前置知识点 1.1 生产环境可部署kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式 kuberadm Kubea ...

  8. 用 edgeadm 一键安装边缘 K8s 集群和原生 K8s 集群

    背景 目前,很多边缘计算容器开源项目在使用上均存在一个默认的前提:用户需要提前准备一个标准的或者特定工具搭建的 Kubernetes 集群,然后再通过特定工具或者其他方式在集群中部署相应组件来体验边缘 ...

  9. 二进制方式搭建Kubernetes集群

    环境准备: 演练暂时用单节点一台master和一台node节点来进行部署搭建(kubernetes 1.19版本) 角色 IP 组件 master 10.129.246.114 kube-apiser ...

随机推荐

  1. SDUST数据结构 - chap2 线性表

    一.判断题: 二.选择题: 三.编程题: 7-1 jmu-ds-顺序表区间元素删除 : 输入样例: 10 5 1 9 10 67 12 8 33 6 2 3 10 输出样例: 1 67 12 33 2 ...

  2. ctfshow—web—web签到题

    打开靶机,发现只有一句话 查看源码 发现一段字符串,猜是base64加密 拿到flag

  3. oracle修改表栏位类型

    需求:ID栏位在创建的时候是varchar类型,后续要修改为number类型 因为oracle修改表栏位类型的时候需要栏位内没有数据,因此无法直接把ID从varchar修改为number 1.新建一个 ...

  4. Python入门之修改jupyter启动目录

    [导读]在给大家分享知识的过程中,我们也会分享一些小技巧,能够帮助大家在学习过程中有更好的体验.之前我们给大家分享了anaconda安装教程以及jupyter notebook使用方法,今天我们为大家 ...

  5. TSP旅行商问题

    求解的问题,burma.tsp里面的内容 1 16.47 96.10 2 16.47 94.44 3 20.09 92.54 4 22.39 93.37 5 25.23 97.24 6 22.00 9 ...

  6. Py集合,字符串的格式化,函数,便利

    可变与不可变 不可变指的是:重新赋值时,内存中的id值会变得 其中有:字符串,数字,元组 name="sb" v=id(name) print(v) name ="ale ...

  7. assets和static的区别

    相同点:assets和static两个都是存放静态资源文件.项目中所需要的资源文件图片,字体图标,样式文件等都可以放在这两个文件下,这是相同点不相同点:assets中存放的静态资源文件在项目打包时,也 ...

  8. SpringBoot-文件系统-Excel,PDF,XML,CSV

    SpringBoot-文件系统-Excel,PDF,XML,CSV 1.Excel文件管理 1.1 POI依赖 1.2 文件读取 1.3 文件创建 1.4 文件导出 1.5 文件导出接口 2.PDF文 ...

  9. 前端开发规范之命名规范、html规范、css规范、js规范

    在学习编程的时候,每次看到那些整齐规范的代码,心里顿时对这个程序员表示点点好感,有时,比如看到自己和朋友写的代码时,那阅读起来就是苦不堪言,所以,一些基本的开发规范是必须的,是为了自己方便阅读代码,也 ...

  10. 基础知识——TCP协议

    七层网络模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层. 五层网络模型: 1. 应用层:确定进程之间通信的性质以满足用户需求.(各种传输协议) 2. 运输层:负责主机间不同进程的通信 ...