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和内存使用情况了,这个还是挺必要的。

  • 升级方法

  • 升级后可查看cpu和内存

k8s~RKE的方式升级Rancher集群的更多相关文章

  1. 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 ...

  2. 升级 Elasticsearch 集群数量实战记录

    搜索引擎 升级 Elasticsearch 集群数量实战记录 现在线上有一个elasticsearch集群搜索服务有三台elasticsearch实例(es1.es2.es3),打算将其升级为5台(增 ...

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

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

  4. lvs+keepalived部署k8s v1.16.4高可用集群

    一.部署环境 1.1 主机列表 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 lvs-keepal ...

  5. Centos7.6部署k8s v1.16.4高可用集群(主备模式)

    一.部署环境 主机列表: 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 master01 7.6. ...

  6. 使用kubeadm平滑地升级kubenetes集群(v1.10.2到v1.10.3)

    写在前面 kubernetes是目前最炙手火热的容器管理.调度.编排平台,不仅拥有全面的生态系统,而且还开源.开放自治,谁贡献的多,谁的话语权就大,云提供商都有专门的工程师来从事kubernetes开 ...

  7. 简单了解一下K8S,并搭建自己的集群

    距离上次更新已经有一个月了,主要是最近工作上的变动有点频繁,现在才暂时稳定下来.这篇博客的本意是带大家从零开始搭建K8S集群的.但是我后面一想,如果是我看了这篇文章,会收获什么?就是跟着步骤一步一走吗 ...

  8. 基于已有集群动态发现方式部署 Etcd 集群

    etcd提供了多种部署集群的方式,在「通过静态发现方式部署etcd集群」 一文中我们介绍了如何通过静态发现方式部署集群. 不过很多时候,你只知道你要搭建一个多大(包含多少节点)的集群,但是并不能事先知 ...

  9. 基于 DNS 动态发现方式部署 Etcd 集群

    使用discovery的方式来搭建etcd集群方式有两种:etcd discovery和DNS discovery.在 「基于已有集群动态发现方式部署etcd集群」一文中讲解了etcd discove ...

  10. 二进制文件方式安装kubernetes集群

    所有操作全部用root使用者进行,高可用一般建议大于等于3台的奇数,我们使用3台master来做高可用 练习环境说明: 参考GitHub master: kube-apiserver,kube-con ...

随机推荐

  1. 阿里巴巴为什么建议使用BigDecimal进行浮点数运算

    本文先引入一个例子,星期天你和女朋友去逛街,看到一家奶茶店.女朋友想喝奶茶了,你就去买了杯奶茶,然后你问了一下价格.店员说奶茶0.9元一杯.然后你给了1元钱.这个时候你忽然问了一下女友.服务员该找我们 ...

  2. PHP的序列化和反序列化

    PHP序列化 什么是PHP序列化 serialize() //将一个对象转换成一个字符串 unserialize() //将字符串还原成一个对象 通过序列化与反序列化我们可以很方便的在PHP中进行对象 ...

  3. 痞子衡嵌入式:恩智浦经典LPC系列MCU内部Flash IAP驱动入门

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦经典LPC系列MCU内部Flash IAP驱动. LPC 系列 MCU 是恩智浦公司于 2003 年开始推出的非常具有代表性的产品 ...

  4. 为什么 Python、Go 和 Rust 都不支持三元运算符?

    在编程时,我们经常要作条件判断,并根据条件的结果选择执行不同的语句块.在许多编程语言中,最常见的写法是三元运算符,但是,Python 并不支持三元运算符,无独有偶,两个最热门的新兴语言 Go 和 Ru ...

  5. 更新pip遇到的问题及解决方法

    问题ython -m pip install --upgrade pip --user D:\APP\Anaconda3\python.exe: No module named pip解决方法 pyt ...

  6. window远程桌面

    此文档概述如何开启win8.win8.1系统的远程桌面连接服务,可以让我们从一台电脑远程连接的其他电脑! 同时按"win键+R键",再打开的运行对话框中输入"contro ...

  7. 教程 - 在 Vue3+Ts 中引入 CesiumJS 的最佳实践@2023

    目录 1. 本篇适用范围与目的 1.1. 适用范围 1.2. 目的 2. 牛刀小试 - 先看到地球 2.1. 创建 Vue3 - TypeScript 工程并安装 cesium 2.2. 清理不必要的 ...

  8. day134:2RenMJ:TypeScript的抽象类&装饰器&命名空间&模块&编译配置文件&python中的类型注解

    目录 1.抽象类 2.装饰器 3.命名空间 4.模块 5.编译配置文件 6.python的类型注解 1.抽象类 抽象类(abstract class)做为其它派生类的基类使用. 它们一般不会直接被实例 ...

  9. SQL优化(二)-- 慢查询

    1.慢查询日志 MYSQL的慢查询日志是Mysql提供的一种日志记录方式,它主要是用来记录mysql执行语句过程中,响应时间超过阀值的语句,这个阀值可以通过long_query_time去指定,比如说 ...

  10. 帝国cms随机sql语句,mysql高效的随机查询

    select * from AppleStorewhere rand()<0.015limit 100;