作者简介

袁振,SUSE Rancher 技术支持经理,负责订阅客户售后技术支持团队,为订阅客户提供技术支持服务。2016 年开始接触容器、Kubernetes 技术,对自动化运维、Devops、Kubernetes、prometheus 和其他云原生相关技术具有较深入的研究,对 SRE 运维体系建设、SRE 运维系统架构设计有着丰富的实践经验。

前 言

Rancher 一直崇尚 “简单即美”,安装和使用都把简单发挥得淋漓尽致。但通过国内环境使用 Rancher 和 RKE2 可能会由于网络问题导致使用体验不佳:

  • Rancher 和 RKE2 启动都依赖于容器镜像,在国内通过 dockerhub 拉取镜像有时会非常慢。
  • RKE2 默认使用 github 资源安装脚本和二进制文件,国内难以下载。

为了解决上述问题,Rancher 已经把资源 mirror 到了国内,并提供给国内环境使用,本文将为大家介绍如何使用国内资源在 RKE2 上安装 Rancher HA。

环境描述

  • 操作系统:SUSE Linux Enterprise Server 15 SP3
  • Kubernetes 发行版:RKE2 Kubernetes-v1.21.9+rke2r1
  • Rancher 版本:2.6.3
  • 节点信息
  • rancher2-6-node01 Server 节点(controller、etcd、worker)
  • rancher2-6-node02 Server 节点(controller、etcd、worker)
  • rancher2-6-node03 Server 节点(controller、etcd、worker)
  • Helm 3.8.0

部署 RKE2 Kubernetes 集群

  • 本章将介绍如何部署 RKE2 的高可用集群,用于 Rancher 2.6 版本的部署环境使用;
  • Rancher 中国团队定时将 dockerhub 上的 RKE2 镜像同步到国内阿里云镜像仓库(registry.cn-hangzhou.aliyuncs.com),所以在国内安装 RKE2 推荐使用阿里云镜像仓库地址;
  • RKE2 可以通过参数 system-default-registry 指定镜像仓库地址。

创建第一个 server 节点

通常情况下,RKE2 使用 /etc/rancher/rke2/config.yaml 文件作为默认配置文件。但是集群部署模式下,需要指定 server 地址、token 和 tls-san 参数,可以先行创建配置文件:

mkdir -p /etc/rancher/rke2 ##创建目录
vim /etc/rancher/rke2/config.yaml ##编辑配置文件 token: rke2-create-token ##自定义token
tls-san: 172.16.200.1 ##tls-san参数
system-default-registry: "registry.cn-hangzhou.aliyuncs.com" ##阿里云镜像库地址

更多配置选项可查看官方文档,配置文件创建完成后,使用以下命令执行脚本安装 rke2-server,由于截止本文发出后的 Rancher 2.6.3 版本尚不支持在 kubernetes 1.22 版本上运行,因此这里使用 v1.21.9+rke2r1 的 kubernetes 版本:

curl -sfL http://rancher-mirror.rancher.cn/rke2/install.sh |
INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_VERSION=v1.21.9+rke2r1 sh -

执行以下命令将 rke2 启动并设置为开机自启动(第一次启动需要下载镜像等文件,需要一定时间):

systemctl start rke2-server && systemctl enable rke2-server

默认的 kubectl 工具和 kubeconfig 文件路径如下:

kubectl: /var/lib/rancher/rke2/bin/kubectl
kubeconfig: /etc/rancher/rke2/rke2.yaml
crictl: /var/lib/rancher/rke2/bin/crictl
ctr: /var/lib/rancher/rke2/bin/ctr

以上工具可以软链接到/usr/bin下方便使用,例如:

ln -s /var/lib/rancher/rke2/bin/kubectl /usr/bin/kubect

执行以下命令可以查看集群状态:

kubectl --kubeconfig /etc/rancher/rke2/rke2.yaml get node

NAME STATUS ROLES AGE VERSION
rancher2-6-node01 Ready control-plane,etcd,master 106s v1.21.9+rke2r1

添加其他 server 节点

在上一个步骤中,我们已经成功启动了第一个 server 节点,现在需要将剩下的两个节点添加到集群中,以组成高可用集群。

在添加第二个 server 节点前,需要手动创建一个 RKE2 配置文件:

mkdir -p /etc/rancher/rke2 ##创建目录
vim /etc/rancher/rke2/config.yaml ##编辑配置文件 server: https://172.16.200.1:9345 ##添加首个节点的server地址;
token: <token for server node> ##填写第一个server节点的token,通过在第一个节点查看/var/lib/rancher/rke2/server/token文件获得;
tls-san: 172.16.200.1 ##tls-san参数;
system-default-registry:"registry.cn-hangzhou.aliyuncs.com" ##阿里云镜像库地址;

执行以下命令执行脚本安装 rke2-server:

curl -sfL http://rancher-mirror.rancher.cn/rke2/install.sh |
INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_VERSION=v1.21.9+rke2r1 sh -

执行以下命令将 rke2 启动并设置为开机自启动(第一次启动需要下载镜像等文件,需要一定时间):

systemctl start rke2-server && systemctl enable rke2-server

同样,在添加第三个 server 节点前,需要手动创建一个 RKE2 配置文件:

mkdir -p /etc/rancher/rke2 ##创建目录
vim /etc/rancher/rke2/config.yaml ##编辑配置文件 server: https://172.16.200.1:9345 ##添加首个节点的server地址;
token: <token for server node> ##填写第一个server节点的token,通过在第一个节点查看/var/lib/rancher/rke2/server/token文件获得;
tls-san: 172.16.200.1 ##tls-san参数;
system-default-registry: "registry.cn-hangzhou.aliyuncs.com" ##阿里云镜像库地址;

执行以下命令执行脚本安装 rke2-server:

curl -sfL http://rancher-mirror.rancher.cn/rke2/install.sh |
INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_VERSION=v1.21.9+rke2r1 sh - 

执行以下命令将 rke2 启动并设置为开机自启动(第一次启动需要下载镜像等文件,需要一定时间):

systemctl start rke2-server && systemctl enable rke2-server

验证集群

执行以下命令可以查看集群状态:

kubectl --kubeconfig /etc/rancher/rke2/rke2.yaml get node

NAME                              STATUS   ROLES                                             AGE VERSION
rancher2-6-node01 Ready control-plane,etcd,master 18m v1.21.9+rke2r1
rancher2-6-node02 Ready control-plane,etcd,master 7m29s v1.21.9+rke2r1
rancher2-6-node03 Ready control-plane,etcd,master 3m31s v1.21.9+rke2r1

至此,我们已经成功创建并运行由 RKE2 创建的 kubernetes 高可用集群,但需要注意的是 RKE2 官方最佳实践表明,高可用集群应该由统一的 LB 入口访问,这样才是真正的高可用。本文主要介绍了 Rancher 2.6 版本在 RKE2 集群上的部署,更详细的 RKE2 使用、部署请参考 RKE2 官方文档https://docs.rancher.cn/docs/rke2/_index/)或者官方公众号文章

RKE2 默认使用 containerd 作为 Runtime,如果想要查询主机上运行的容器,可以使用以下命令:

crictl --config /var/lib/rancher/rke2/agent/etc/crictl.yaml ps

部署 Rancher 2.6.3

  • 本章将介绍如何在 RKE2 集群中部署 Rancher 2.6.3 版本;
  • Rancher 中国团队定时将 dockerhub 上的 Rancher 镜像同步到国内阿里云镜像仓库(registry.cn-hangzhou.aliyuncs.com),所以在国内安装 Rancher 推荐使用阿里云镜像仓库地址;
  • 可以通过 helm chart 选项 rancherImage 和 systemDefaultRegistry 来设置使用阿里云镜像仓库。

安装 Rancher 2.6.3

添加 Rancher helm repo 源:

helm repo add rancher-latest http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/latest

"rancher-latest" has been added to your repositories

此处使用为国内源地址,国外地址使用https://releases.rancher.com/server-charts/<CHART_REPO>关于更多国内加速信息,请查看官方公众号【如何在国内优雅地使用Rancher

为 Rancher 创建 Namespace:

kubeconfig=/etc/rancher/rke2/rke2.yaml

kubectl --kubeconfig=$kubeconfig create namespace cattle-system

创建 Ingress 证书:

kubeconfig=/etc/rancher/rke2/rke2.yaml

kubectl --kubeconfig=$kubeconfig \
-n cattle-system create secret \
tls tls-rancher-ingress \
--cert=./tls.pem \
--key=./tls.key

helm 安装 Rancher Server:

helm --kubeconfig=$kubeconfig install rancher rancher-latest/rancher \
--namespace cattle-system \
--set hostname=rancher26.itlsp.com \
--set rancherImage=registry.cn-hangzhou.aliyuncs.com/rancher/rancher \
--set ingress.tls.source=secret \
--set systemDefaultRegistry=registry.cn-hangzhou.aliyuncs.com \
--set rancherImageTag=v2.6.3 ## hostname为上一步创建证书中的hostname;
## systemDefaultRegistry和rancherImage中的镜像库可指定;
## 以上命令为权威证书安装命令,如果是自签名证书参考以下命令 ## 创建自签名Ingress证书
kubectl --kubeconfig=$kubeconfig \
-n cattle-system create \
secret tls tls-rancher-ingress \
--cert=./tls.crt \
--key=./tls.key
## 创建自签名证书CA
kubectl --kubeconfig=$kubeconfig \
-n cattle-system \
create secret generic tls-ca \
--from-file=cacerts.pem ##helm安装Rancher server
helm --kubeconfig=$kubeconfig install rancher rancher-latest/rancher \
--namespace cattle-system \
--set hostname=<修改为自己的域名> \
--set rancherImage=<镜像库地址>/cnrancher/rancher \
--set privateCA=true \
--set ingress.tls.source=secret \
--set systemDefaultRegistry=<镜像库地址> \
--set rancherImageTag=v2.6.3

执行以下命令查看 Rancher Server Pod 状态:

kubectl --kubeconfig=$kubeconfig -n cattle-system get pod | grep rancher

rancher-57f57f775-4bjdj 1/1 Running 1 5m58s
rancher-57f57f775-fdh6c 1/1 Running 0 5m58s
rancher-57f57f775-fnsxk 1/1 Running 0 5m58s

恭喜你!到这个步骤,应该已经可以通过浏览器访问全新的 Rancher 2.6.3 版本了。至此,全新的 Rancher2.6.3 版本已经运行在更安全、更稳定、更高效的 RKE2 平台上。

总结

  • RKE2 是 SUSE Rancher 下一代 Kubernetes 发行版,它以更高的安全性著称(它还有另外一个名字:RKE Government);启用了 FIPS 140-2 标准,并完全通过了 CIS1.5 和 1.6 版本的扫描;
  • 另外 RKE2 默认未采用 docker 作为 Runtime,而是使用了更底层的 containerd;针对 kubernetes 抛弃 docker 后何去何从这一问题,这一做法大大稳定了国内用户的信心;
  • RKE2 将 kube-apiserver、etcd、kube-controller-manager 等核心组件作为静态 Pod 运行,由二进制运行的 kubelet 进行管理,增强了故障自愈能力和整体的稳定性,也降低了部署难度;
  • 本文中安装 Rancher 和 RKE2 均使用了阿里云镜像仓库 registry.cn-hangzhou.aliyuncs.com,安装 RKE2 的脚本也使用了国内的资源,这样能大大提升国内用户的体验。

如何使用国内资源在 RKE2 上安装 Rancher HA的更多相关文章

  1. Mac019--Ubuntu上安装Rancher

    首先安装:VisualBox虚拟机. 下载:ubuntu镜像 (ubuntu基于linux的免费开源桌面PC操作系统) ======================================== ...

  2. 在haoodp-2.7.3 HA的基础上安装Hbase HA

    前提安装好hadoop基于QJM的高可用 node1 HMaster node2 HMaster.HRegionServer node3 HRegionServer node4 HRegionServ ...

  3. K3S系列文章-使用AutoK3s在腾讯云上安装高可用K3S集群

    开篇 <K3s 系列文章> <Rancher 系列文章> 方案 在腾讯云上安装 K3S 后续会在这套 K3S 集群上安装 Rancher 方案目标 高可用 3 台master ...

  4. Docker For Mac 下安装 Rancher

    https://www.jianshu.com/p/5fb3e1a998d6 Docker For Mac 下安装 Rancher 原文:如何在 OS X 上安装 Rancher Rancher 是 ...

  5. Mac上安装第三方应用显示包资源破坏解决办法

    Mac上安装第三方应用显示包资源破坏解决办法 步骤1:Spotlight搜索(快捷键:command+空格或右上角搜索的符号):搜索 “终端”步骤2:直接复制粘贴 sudo spctl --maste ...

  6. 在ubuntu上安装k-vim

    在ubuntu 上安装k-vim 早就想好好改造一下自己使用的vim了!可惜各种配置都十分复杂,特别是涉及到C语言的语义补全,YouCompleteMe,总是出各种安装问题.今天有人推荐我使用k-vi ...

  7. 在VMWare上安装Arch Linux

    1.为什么选择Arch Linux Arch Linux 是通用 x86-64 GNU/Linux 发行版.Arch采用滚动升级模式,尽全力提供最新的稳定版软件.初始安装的Arch只是一个基本系统,随 ...

  8. DB 查询分析器 6.03 在Windows 8 上安装与运行演示

           DB 查询分析器 6.03 在Windows 8 上安装与运行演示 马根峰                ( 广东联合电子服务股份有限公司, 广州 510300) 摘要          ...

  9. (1)RabbitMQ在Docker上安装

    1.简介 在来学习RabbitMQ时候,我觉得很有必要先把它的环境先搭建起来,这样后面的示例才能进行.因为之前自己手动在Linux服务器上搭建过Elasticsearch,当时踩过太多坑了,浪费太多时 ...

  10. 如何在win10系统上安装linux子系统

    对于软件开发人员来说,linux基本上是一个绕不过去的槛. 因为工作经常要用到linux,电脑用纯linux还是windows + 虚拟机装linux,我一直纠结. 如果装个纯linux,则一些win ...

随机推荐

  1. markdown常用数学公式

    常用数学公式示例 单行 $$ f(x)=x $$ \[f(x)=x \] 多行 $$ \sum_i^n + \sum_{i=0}^{n} $$ \[\sum_i^n + \sum_{i=0}^{n} ...

  2. JAVA基础-4-.数据类型--九五小庞

                  练习代码:     1 public class Demo1 { 2 public static void main(String[] args) { 3 System.o ...

  3. CloudQuery, 一款基于WEB的数据库客户端测试(转载自杨建荣的工作笔记)

    CloudQuery, 一款基于WEB的数据库客户端测试 对于数据库客户端的使用,一直以来都有一些困扰,我想对很多人来说都或多或少会有: 1)多种数据库的客户端软件使用方式是独立的,几乎不存在交集 2 ...

  4. 【x86】DRAM、SRAM、DDR、FLASH、双通道的概念科普

    内存的DRAM.SRAM 在学习数电的时候就学习过,RAM分为两大类,有DRAM(Dynamic RAM).SRAM(Static RAM),在装机器的时候也经常会听到DDR3 DDR4 DDR5等概 ...

  5. Find a gift

    题目传送门 题意简述 \(T\) 组数据. 给定 \(n\) 个盒子,\(n\le 10^3\),每个盒子可能有石头或礼物,已知石头的重量严格大于礼物重量且石头重量都相等,礼物的重量可能不同,礼物数量 ...

  6. CentOS7下安装Mysql数据库详细过程 附Linux 64位 Mysql压缩包百度云盘分享

    [Linux]CentOS7下安装Mysql数据库详细过程 附Linux 64位 Mysql压缩包百度云盘分享,废话就不多说了,直接搞起来?冲冲! 第一步:连接上Xshell,卸载MariaDB数据库 ...

  7. 【QML 多级菜单设计】利用ListView设计多级菜单, 支持动态

    在本文中,我们将探讨如何使用Qt Quick和QML来实现一个多级折叠下拉导航菜单,该菜单支持动态添加和卸载子菜单项 1 import QtQuick 2.15 2 import QtQuick.Co ...

  8. Qt之QWebView

    https://blog.csdn.net/qq_40194498/article/details/80783700 .pro文件添加: Qt += webkitwidgets1在设计界面拖入QWeb ...

  9. 人工智能python3+tensorflow人脸识别_使用 face-api.js 在你的浏览器中做人脸识别(基于 tensorflow.js

    我很兴奋地告诉你,终于可以在浏览器中运行人脸识别了!这篇文章我将介绍 face-api.js ,这个类库构建于 tensorflow.js 之上.它实现了多个 CNNs(卷积神经网络)以解决人脸检测. ...

  10. 单卡就能跑的大模型等效GPT-3!Meta发布大语言模型LLaMA

    Pine 发自凹非寺 量子位公众号 QbitAI ChatGPT 的热度稍有平息,蛰伏已久的 Meta 就迅速放出"大招":一次性发布四种尺寸的大语言模型 LLaMA:7B.13B ...