k8s~RKE的方式升级Rancher集群
kubectl安装
在主机或者远程访问的笔记本上安装kubectl命令行工具
rancher-cluster.yml(RKE配置文件)
通过RKE创建kubernetes集群,需要预先设置rancher-cluster.yml配置文件,通过这个配置文件安装kubernetes集群,同时可以指定kubernetes的版本。
RKE安装kubernetes集群后,会在RKE二进制文件相同目录下生成kube_config_rancher-cluster.yml文件,复制该配置文件到~/.kube/目录,这个文件在升级集群时会用的到。
查看rke支持的k8s版本
[root@rancher home]# rke config --list-version -all
v1.16.2-rancher1-1
v1.14.8-rancher1-1
v1.15.5-rancher1-2
如果版本太老,是无法安装新版rancher的,还需要先升级RKE,下载rkev1.3.8版本,对基础集群的k8s进行升级
./rke_linux-amd64-1.3.8 up --config=./rke2019/rancher-cluster.yml
升级之后,可以在基础集群上看一下版本
kubectl get nodes
NAME STATUS ROLES AGE VERSION
192.168.0.204 Ready controlplane,etcd,worker 11h v1.18.20
升级步骤
在安装了kubectl命令行工具的电脑上打开终端
切换路径到RKE二进制文件所在目录,确认rancher-cluster.yml在同一路径下
一 升级前的准备工作
1.1 x509证书问题的产生原因
- x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0"
这是因为 Rancher 把 v2.5.10 以上,或 2.6.x 之后将 go 版本从 1.14 提升到了 1.16。而且,go 1.15 版本开始废弃 CommonName,推荐使用 SAN 证书,参考:https://golang.org/doc/go1.15#commonname 。 如果你的自签名证书中不包含 SANs,就会出现上面的报错。 - 要解决这个问题,有两种方案:
- 方案 1:替换 Rancher HA 证书#
使用一键生成 ssl 自签名证书脚本 重新生成证书,然后参考无需重新搭建集群,轻松替换证书替换 Rancher HA 的证书。 - 方案 2:添加环境变量 GODEBUG=x509ignoreCN=0#
- 更新 Rancher Server ,添加环境变量GODEBUG=x509ignoreCN=0
- 升级业务集群Rancher-agnet 通过extraEnv设置环境变量GODEBUG=x509ignoreCN=0
- 方案 1:替换 Rancher HA 证书#
1.2 x509证书问题的解决
1.2.1 生成集群集群
kubectl set env deployment/rancher -n cattle-system GODEBUG="x509ignoreCN=0"
1.2.2 业务集群升级
export GODEBUG=x509ignoreCN=0
kubectl set env deployment/cattle-cluster-agent -n cattle-system GODEBUG="x509ignoreCN=0"
kubectl set env daemonset/cattle-node-agent -n cattle-system GODEBUG="x509ignoreCN=0"
二 创建ETCD快照备份
替换<SNAPSHOT.db>为您喜欢的快照名称(例如upgrade.db),默认位置:/opt/rke/etcd-snapshots/,注意需要修改这个目录下的文件权限,否则vonechain用户无权访问它,可以返回root账号,进行以chown vonechain:root /opt/rke/etcd-snapshots
# Linux
rke etcd snapshot-save --name 20220310.bak --config rancher-cluster.yml
# 恢复
rke etcd snapshot-restore --name 20220222.bak --config rancher-cluster.yml
# restore: 指定用于恢复的快照文件
# -data-dir:恢复到哪个目录
RKE获取每个etcd节点上的运行快照,保存快照文件当前到etcd节点的/opt/rke/etcd-snapshots目录下.
三 升级RKE对应的k8s
如果原来是rancherv2.3.3,对应的rke版本比较低,只能先升级到k8s v1.18.20-rancher1-3;再高的版本,其它业务集群的k8s无法平滑过渡
rancher-cluster.yml文件下如
nodes:
- address: 192.168.0.204
internal_address: 192.168.0.204
user: vonechain
role: [controlplane,worker,etcd]
kubernetes_version: "v1.18.20-rancher1-3"
services:
etcd:
snapshot: true
creation: 6h
retention: 24h
四 Rancher基础集群升级
输入以下命令进行升级,注意升级的代码根据版本的不同,可以有所不同:
# rancher v2.5.8的升级到2.6.3如下
kubectl --kubeconfig=kube_config_rancher-cluster.yml set image deployment/rancher rancher=rancher/rancher:v2.6.3 -n cattle-system
替换<VERSION_TAG>为想要升级到的版本,可用的镜像版本可查阅DockerHub。
说明:set image用来更新镜像,上面的代码更新Deployment类型下面的rancher部署项目,容器是rancher,更新一个新的镜像rancher/rancher:v2.6.3 。
五 业务集群的升级【可以不升级】
/etc/kubernetes/ssl/kubecfg-kube-node.yaml这个是rancher为当前节点生产的k8s集群文件
kubectl set image deployment/cattle-cluster-agent cluster-register=rancher/rancher-agent:v2.6.3 -n cattle-system
kubectl set image DaemonSet/cattle-node-agent agent=rancher/rancher-agent:v2.6.3 -n cattle-system
升级之后,业务集群会自动下载对应的rancher镜像,等待高版本镜像启动即可
六 业务集群的k8s版本升级
之前是1.17,现在想升级到1.20,1.17在仪表盘里没有显示cpu和内存的使用情况,升级到1.20之后,在仪表表里,就可以看到实时的CPU和内存使用情况了,这个还是挺必要的。
- 升级方法

- 升级后可查看cpu和内存

k8s~RKE的方式升级Rancher集群的更多相关文章
- kubernetes之手动部署k8s 1.14.1高可用集群
1. 架构信息 系统版本:CentOS 7.6 内核:3.10.0-957.el7.x86_64 Kubernetes: v1.14.1 Docker-ce: 18.09.5 推荐硬件配置:4核8G ...
- 升级 Elasticsearch 集群数量实战记录
搜索引擎 升级 Elasticsearch 集群数量实战记录 现在线上有一个elasticsearch集群搜索服务有三台elasticsearch实例(es1.es2.es3),打算将其升级为5台(增 ...
- kubernetes(K8S)快速安装与配置集群搭建图文教程
kubernetes(K8S)快速安装与配置集群搭建图文教程 作者: admin 分类: K8S 发布时间: 2018-09-16 12:20 Kubernetes是什么? 首先,它是一个全新的基于容 ...
- lvs+keepalived部署k8s v1.16.4高可用集群
一.部署环境 1.1 主机列表 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 lvs-keepal ...
- Centos7.6部署k8s v1.16.4高可用集群(主备模式)
一.部署环境 主机列表: 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 master01 7.6. ...
- 使用kubeadm平滑地升级kubenetes集群(v1.10.2到v1.10.3)
写在前面 kubernetes是目前最炙手火热的容器管理.调度.编排平台,不仅拥有全面的生态系统,而且还开源.开放自治,谁贡献的多,谁的话语权就大,云提供商都有专门的工程师来从事kubernetes开 ...
- 简单了解一下K8S,并搭建自己的集群
距离上次更新已经有一个月了,主要是最近工作上的变动有点频繁,现在才暂时稳定下来.这篇博客的本意是带大家从零开始搭建K8S集群的.但是我后面一想,如果是我看了这篇文章,会收获什么?就是跟着步骤一步一走吗 ...
- 基于已有集群动态发现方式部署 Etcd 集群
etcd提供了多种部署集群的方式,在「通过静态发现方式部署etcd集群」 一文中我们介绍了如何通过静态发现方式部署集群. 不过很多时候,你只知道你要搭建一个多大(包含多少节点)的集群,但是并不能事先知 ...
- 基于 DNS 动态发现方式部署 Etcd 集群
使用discovery的方式来搭建etcd集群方式有两种:etcd discovery和DNS discovery.在 「基于已有集群动态发现方式部署etcd集群」一文中讲解了etcd discove ...
- 二进制文件方式安装kubernetes集群
所有操作全部用root使用者进行,高可用一般建议大于等于3台的奇数,我们使用3台master来做高可用 练习环境说明: 参考GitHub master: kube-apiserver,kube-con ...
随机推荐
- Shell---控制流程
操作系统: RHEL7.x 或CentOS 7.x 最小化安装 配置好固定的IP,能访问互联网 配置好yum源(yum repolist 可以查看yum源) 本地光盘 挂载光盘,开机自动挂载 vim ...
- 【Jenkins系列】-Pipeline语法全集
Jenkins为您提供了两种开发管道代码的方式:脚本式和声明式. 脚本式流水线(也称为"传统"流水线)基于Groovy作为其特定于域的语言. 而声明式流水线提供了简化且更友好的语法 ...
- [Windows]BAT脚本自定义函数
1 helloworld @echo off call :helloworld helloworld goto :EOF :helloworld setlocal echo %1 endlocal&a ...
- [Linux/Bash/Shell]curl & wget
1 参考文献 curl 的用法指南 - 阮一峰 curl网站开发指南 - 阮一峰 Curl Cookbook https://curl.haxx.se/ linux curl 命令详解,以及实例 2 ...
- 四月二十日java基础知识
1.不可被继承的成员与最终类:在默认情况下,所有的成员变量和成员方法都可以被覆盖,如果父类的成员不希望被子类的成员锁覆盖可以将它们声明为final.如果用final来修饰成员变量,则说明该成员变量是最 ...
- ES日志存储以及备份压缩到COS
导语 为了满足用户日益增长的日志存储大小,不影响用户的写入和查询性能.满足不同用户写入流量.同时用户日志长期保存,日志存储比较占用空间和成本.ES集群规格配置高,消耗资源和成本.我们基于Go语言设计了 ...
- 04-webpack初体验
/** * index.js: webpack入口起点文件 * * 1.运行指令: * 开发环境:webpack ./src/index.js -o ./build --mode=developmen ...
- Python全栈开发工程师 day57 jQuery
二.jQuery样式操作标签样式操作<!DOCTYPE html><html lang="en"><head> <meta charset ...
- Django框架——可视化界面之数据增删改查、Django请求生命周期、Django路由层、反向解析
可视化界面之数据增删改查 针对数据对象主键字段的获取可以使用更加方便的 obj.pk获取 在模型类中定义双下str方法可以在数据对象被执行打印操作的时候方便的查看 ''' form表单中能够触发调剂动 ...
- Mapstruct使用报java: Couldn't retrieve @Mapper annotation
检查代码报错 java: Couldn't retrieve @Mapper annotation jar包冲突,去掉一个Mapstructjar包.