首页 > 其他分享 >k8s~RKE的方式升级Rancher集群

k8s~RKE的方式升级Rancher集群

时间:2023-06-08 17:11:22浏览次数:47  
标签:kubectl cluster 升级 RKE 集群 etcd Rancher k8s 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.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和内存使用情况了,这个还是挺必要的。

  • 升级方法

image

  • 升级后可查看cpu和内存

image

标签:kubectl,cluster,升级,RKE,集群,etcd,Rancher,k8s,rancher
From: https://www.cnblogs.com/lori/p/17467086.html

相关文章

  • k8s实现动态存储
    NFS服务端安装      1.yuminstallnfs-utils-y        k8s所有节点都需要安装上面的nfs包      2.在NFSserver上配置NFS              3.启动NFS服务       systemctlstartnfs-server......
  • K8s 指定 pod 运行在固定ip方式
    Kubernetes指定pod运行在固定ip方式方式一在CalicoGitHubIssues#5196问题的commits#6249提交中,引入新的Pod注释cni.projectcalico.org/hwAddr,用于将指定的MAC地址分配给容器端Veth接口。将Calico升级至v3.24.1或以上版本,使用如下注解轻松设置PodIP和Mac地址。......
  • [Docker/K8S]Docker与K8S的区别
    1定义角度Docker是一种开放源码的应用容器引擎,允许开发人员将其应用和依赖包打包成可移植的容器/镜像中;然后,发布到任何流行的Linux或Windows机器上,也能实现虚拟化。该容器完全使用沙箱机制,彼此之间没有任何接口。k8s,全称kubernetes,是一种开放源码的容器集群管理系统,能......
  • rancher 卸载后重装报错
    报错信息kubectlcreatenamespacecattle-systemErrorfromserver(InternalError):Internalerroroccurred:failedcallingwebhook"rancher.cattle.io.namespaces.create-non-kubesystem":failedtocallwebhook:Post"https://rancher-webhook.cattl......
  • K8S批量删除指定的pod
    K8S批量删除指定的pod应用场景:我自己建了100个test-exporter,生成名称随机,然后我想删除掉这一百个pod,流程如下:1.先看pod,命令kubectlgetpod-nmonitor(这里的-nmonitor指的是我自己pod的容器名称,可以百度一下),如图2.筛选出自己想要删除的pod,我这里通过名称筛选:kubectlgetpod......
  • k8s实战案例之部署redis单机和redis cluster
    1、在k8s上部署redis单机1.1、redis简介redis是一款基于BSD协议,开源的非关系型数据库(nosql数据库),作者是意大利开发者SalvatoreSanfilippo在2009年发布,使用C语言编写;redis是基于内存存储,而且是目前比较流行的键值数据库(key-valuedatabase),它提供将内存通过网络远程共享的一种服......
  • k8s Route上的annoation
    在Kubernetes中,Route对象支持使用annotation来添加元数据,以提供有关路由对象的更多信息。可以使用annotation来指定与路由对象相关的信息,例如TLS配置、负载均衡策略、重定向规则等等。要添加annotation,可以按照以下步骤进行操作:1.打开要更改的Route对象的YAML文......
  • 【Azure K8S】AKS升级 Kubernetes version 失败问题的分析与解决
    问题描述创建AzureKubernetesService服务后,需要升级AKS集群的kubernetesversion。在AKS页面的Clusterconfiguration 页面中,选择新的版本1.25.5,确认升级。等待50分钟左右,却等到了升级失败的消息:FailedtosaveKubernetesservice'xxxx-aks3'.Error:Drainofaks-age......
  • Supermarket 3种解法保证看懂
    ​Description给定N个商品每个商品有利润p_i和过期时间d_i每天只能卖一个商品,过期商品不能再卖,求如何安排每天卖的商品,可以使收益最大。1≤N,p_i,d_i≤10^4。FormatInput测试做到文件底结束对于每组数据,先给出数字N接下来N行,每行两个数字代表pi与diOutput如题Sam......
  • k8s
    kubectl创建Pod背后到底发生了什么kubectl创建Pod背后发生了以下一些主要的步骤:kubectl解析配置文件:kubectl会读取Pod的配置文件,通常是YAML或JSON格式,解析其中的内容并将其转换为KubernetesAPI对象。验证配置文件:在创建Pod之前,kubectl会验证Pod配置......