k8s~RKE的方式升级Rancher集群

打印 上一主题 下一主题

主题 1057|帖子 1057|积分 3171

kubectl安装

在主机或者远程访问的笔记本上安装kubectl命令行工具
  1. rancher-cluster.yml(RKE配置文件)
复制代码
通过RKE创建kubernetes集群,需要预先设置rancher-cluster.yml配置文件,通过这个配置文件安装kubernetes集群,同时可以指定kubernetes的版本。
RKE安装kubernetes集群后,会在RKE二进制文件相同目录下生成kube_config_rancher-cluster.yml文件,复制该配置文件到~/.kube/目录,这个文件在升级集群时会用的到。
查看rke支持的k8s版本
  1. [root@rancher home]# rke config --list-version -all
  2. v1.16.2-rancher1-1
  3. v1.14.8-rancher1-1
  4. v1.15.5-rancher1-2
复制代码
如果版本太老,是无法安装新版rancher的,还需要先升级RKE,下载rkev1.3.8版本,对基础集群的k8s进行升级
  1. ./rke_linux-amd64-1.3.8  up --config=./rke2019/rancher-cluster.yml
复制代码
升级之后,可以在基础集群上看一下版本
  1. kubectl get nodes
  2. NAME            STATUS   ROLES                      AGE   VERSION
  3. 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.2 x509证书问题的解决

1.2.1 生成集群集群
  1. kubectl set env deployment/rancher  -n cattle-system GODEBUG="x509ignoreCN=0"
复制代码
1.2.2 业务集群升级
  1. export GODEBUG=x509ignoreCN=0
  2. kubectl set env deployment/cattle-cluster-agent  -n cattle-system GODEBUG="x509ignoreCN=0"
  3. kubectl set env daemonset/cattle-node-agent  -n cattle-system GODEBUG="x509ignoreCN=0"
复制代码
二 创建ETCD快照备份

替换为您喜欢的快照名称(例如upgrade.db),默认位置:/opt/rke/etcd-snapshots/,注意需要修改这个目录下的文件权限,否则vonechain用户无权访问它,可以返回root账号,进行以chown  vonechain:root /opt/rke/etcd-snapshots
  1. # Linux
  2. rke etcd snapshot-save --name 20220310.bak --config rancher-cluster.yml
  3. # 恢复
  4. rke etcd snapshot-restore  --name 20220222.bak  --config rancher-cluster.yml
  5. #  restore: 指定用于恢复的快照文件
  6. #  -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文件下如
  1. nodes:
  2.   - address: 192.168.0.204
  3.     internal_address: 192.168.0.204
  4.     user: vonechain
  5.     role: [controlplane,worker,etcd]
  6. kubernetes_version: "v1.18.20-rancher1-3"
  7. services:
  8.     etcd:
  9.       snapshot: true
  10.       creation: 6h
  11.       retention: 24h
复制代码
四 Rancher基础集群升级

输入以下命令进行升级,注意升级的代码根据版本的不同,可以有所不同:
  1. # rancher v2.5.8的升级到2.6.3如下
  2. kubectl --kubeconfig=kube_config_rancher-cluster.yml set image deployment/rancher rancher=rancher/rancher:v2.6.3 -n cattle-system
复制代码
替换为想要升级到的版本,可用的镜像版本可查阅DockerHub
说明:set image用来更新镜像,上面的代码更新Deployment类型下面的rancher部署项目,容器是rancher,更新一个新的镜像rancher/rancher:v2.6.3 。
五 业务集群的升级【可以不升级】

/etc/kubernetes/ssl/kubecfg-kube-node.yaml这个是rancher为当前节点生产的k8s集群文件
  1. kubectl set image deployment/cattle-cluster-agent cluster-register=rancher/rancher-agent:v2.6.3 -n cattle-system
  2. 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和内存


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表