第二章-SUSE- Rancher-容器高可用与容灾测试-RKE2-集群搭建(外置Mysql)-Tarball方法

系列文章目录

​​​​​​​第一章-SUSE- Rancher-容器高可用与容灾测试-RKE2-外置Mysql(主备集群搭建)-CSDN博客

第二章-SUSE- Rancher-容器高可用与容灾测试-RKE2-集群搭建(外置Mysql)

第三章-SUSE- Rancher-容器高可用与容灾测试-Rancher-外置数据库(复用Mysql)

第四章-SUSE- Rancher-容器高可用与容灾测试-RKE2(容灾测试)

第五章-SUSE- Rancher-容器高可用与容灾测试-Rancher-back up(容灾测试)

第六章-SUSE- Rancher-容器高可用与容灾测试-Rancher拉起的集群(快照容灾测试)

第七章-SUSE- Rancher-容器高可用与容灾测试-Longhorn(容灾卷跨集群测试)


目录

前言

二、搭建RKE2-Server节点

1.下载RKE2-image文件

2.使用外网节点下载RKE2-Imagev1.30镜像

3.下载rke2-编译好的二进程文件

4.在RKE2的2个节点上分别创建镜像目录与放入镜像:

5、rke2配置选项

[6、RKE2 安装指定配置文件安装](#6、RKE2 安装指定配置文件安装)

总结


前言

第一章我们搭建好了Mysql(主备复制)实例。

本章我们计划搭建好Rancher管理集群的基础设施- RKE2集群-Tarball方法-离线。


一、创建RKE2集群的云主机

*测试环境2C-4G即可,正式环境根据负载进行扩容

二、搭建RKE2-Server节点-Tarball离线方法

这里先概述一下RKE2节点启动的过程,会更加帮助你完成整个安装工作。

下一代 Kubernetes 发行版剖析 | RKE2架构概述https://docs.rke2.io/zh/architecture

进程分为Server节点启动和普通的Agent节点(worker)节点启动

内容引导

1、所有的节点最开始引导时:

1、 /var/lib/rancher/rke2/agent/images/*.tar 获取 rancher/rke2-runtime​​​​​​​ 镜像。

2、将镜像中的文件复制到/var/lib/rancher/rke2/data/目录下给节点使用。

3、本地没有则默认去docker.io拉取rke2-runtime镜像。

初始化 Server

在嵌入式 K3s 引擎中,server 是专门的 agent 进程,换言之,它会在节点容器运行时启动后再启动。(注意这里就启动runtime了),包括上面的内容引导拉取镜像也是runtime做的。

1、Server节点与普通worker节点最大的不同就是多了3个控制面的组件。

kube-apiserver kube-controller-manager kube-scheduler

2、上面的控制面组件都是静态pod.

3、文件位置在/var/lib/rancher/rke2/agent/pod-manifests/

初始化Server节点只是在/var/lib/rancher/rke2/agent/pod-manifests/下写pod的静态pod文件而不是启动。

Server节点:

worker节点:

启动集群

在 goroutine 中启动 HTTP 服务器来侦听其他集群 server/agent,然后初始化/加入集群。

默认端口为9345.

etcd

初始化Server节点只是在/var/lib/rancher/rke2/agent/pod-manifests/下写pod的静态pod文件而不是启动。etcd也是写文件不启动。

以上都是启动Server 节点会做的事情。

同时无论是server节点还是agent(worker)节点都会做下面的事情。

1、Server和agent节点启动进程都会最先启动runtime,然后使用runtime扫描镜像,没有就拉取。

2、 kubelet

生成并监督 kubelet 进程。如果 kubelet 退出,那么 rke2 将尝试重启它。 kubelet 运行后,它将启动任何可用的静态 pod。对于 server,这意味着 etcdkube-apiserver 将依次启动,允许其余组件通过静态 pod 启动,从而连接到 kube-apiserver 并开始处理。

**这里Server和agent才开始启动静态pod.

没有单独的kubelet进程和rke2对应的进程放在一起运行的。

3、使用**helm-controller**

kube-apiserver 准备就绪后,启动 goroutine 来启动嵌入式 helm-controller

helm-controller可以使用helm-crd像编辑yaml的方式来管理k8s中的chart应用。

1.下载RKE2-image文件

本次测试使用离线安装RKE2集群,模拟真实客户现场。

RKE2提供2种方式:

1、一种是Tarball 方法

2、一种是私有仓库-本次不涉及

本次测试Tarball方法:

1、进入RKE2项目-Releases​​​​​​​​​​​​​​Releases · rancher/rke2 · GitHubContribute to rancher/rke2 development by creating an account on GitHub.https://github.com/rancher/rke2/releaseshttps://github.com/rancher/rke2/releaseshttps://github.com/rancher/rke2/releaseshttps://github.com/rancher/rke2/releaseshttps://github.com/rancher/rke2/releaseshttps://github.com/rancher/rke2/releaseshttps://github.com/rancher/rke2/releaseshttps://github.com/rancher/rke2/releaseshttps://github.com/rancher/rke2/releaseshttps://github.com/rancher/rke2/releaseshttps://github.com/rancher/rke2/releaseshttps://github.com/rancher/rke2/releaseshttps://github.com/rancher/rke2/releases2、我们计划部署测试的Rancher Manager v2.9.5,故我们需要查阅兼容性

1、首先是RKE2与OS的兼容性。

RKE2 v1.28 | SUSERKE2 v1.28https://www.suse.com/suse-rke2/support-matrix/all-supported-versions/rke2-v1-28/https://www.suse.com/suse-rke2/support-matrix/all-supported-versions/rke2-v1-28/https://www.suse.com/suse-rke2/support-matrix/all-supported-versions/rke2-v1-28/https://www.suse.com/suse-rke2/support-matrix/all-supported-versions/rke2-v1-28/https://www.suse.com/suse-rke2/support-matrix/all-supported-versions/rke2-v1-28/https://www.suse.com/suse-rke2/support-matrix/all-supported-versions/rke2-v1-28/https://www.suse.com/suse-rke2/support-matrix/all-supported-versions/rke2-v1-28/https://www.suse.com/suse-rke2/support-matrix/all-supported-versions/rke2-v1-28/https://www.suse.com/suse-rke2/support-matrix/all-supported-versions/rke2-v1-28/https://www.suse.com/suse-rke2/support-matrix/all-supported-versions/rke2-v1-28/https://www.suse.com/suse-rke2/support-matrix/all-supported-versions/rke2-v1-28/https://www.suse.com/suse-rke2/support-matrix/all-supported-versions/rke2-v1-28/

​​​​​​​

2、然后是RKE2与Rancher的兼容性。

Rancher Manager v2.9.5 | SUSERancher Manager v2.9.5https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-9-5/https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-9-5/https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-9-5/https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-9-5/https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-9-5/https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-9-5/https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-9-5/https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-9-5/https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-9-5/https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-9-5/https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-9-5/https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-9-5/

既然是测试那就玩次新的v1.30.

2.使用外网节点下载必要的安装镜像

根据官网离线安装指引。

*我们需要下载rke2(2进制文件),rke2-CNI(镜像),rke2-(控制面镜像)core,以及tarball 镜像。
外网节点下载core加对于的CNI插件镜像即可。

1、rke2-images-core.linux-amd64.tar.zst

2、rke2-images-cilium.linux-amd64.tar.zst

3、rke2 二进制文件

4、tarball镜像文件


其中有txt文件可以显示下载的镜像目录,很方便看到。

3.下载安装脚本

#需要用外网节点下载脚本
curl -sfL https://get.rke2.io --output install.sh

4.在RKE2的server节点上创建存放镜像目录:

根据指引我们创建两个目录:

mkdir -p /var/lib/rancher/rke2/agent/images/

mkdir /root/rke2-artifacts && cd /root/rke2-artifacts/

5.放入文件与下载的镜像。

这里其实只需要放入rke2.linux-amd64.tar.gz就行,但是我为了备份一个镜像所以将其它文件放入到这个目录下面了。

测试这个时候实验rke2进制来安装会占据你的终端,故我们使用脚本来安装。

脚本才会用systemd在后台运行

6、rke2配置/etc/rancher/rke2/config.yaml

touch /etc/rancher/rke2/config.yaml

*我们需要添加我们的数据库连接方式以及设置网络插件为cilium.

*如果是本地主备的话,Mysql的连接地址为NLB的VIP地址。

*我们这里是异地可用区灾备,本地就用数据库地址即可。

write-kubeconfig-mode: "0644"
tls-san:
  - "foo.local"
node-label:
  - "job=rke2"
datastore-endpoint: "mysql://root:e2231255@tcp(172.30.0.213:3306)/kubernetes"
cni: cilium
write-kubeconfig-mode: "0644"
debug: true
token: SECRET

7、RKE2 运行脚本文件安装

1、我们在/var/lib/rancher/rke2/agent/images/放入了cni以及core压缩包。

2、我们在/root/rke2-artifacts/ 放入cni以及core压缩包,install.sh等文件。

3、在编写好了/etc/rancher/rke2/config.yaml文件。

4、搭建好了Mysql容灾复制集群。
前置条件都好了,开始正式安装。

INSTALL_RKE2_ARTIFACT_PATH=/root/rke2-artifacts sh install.sh

接着就是正常的流程。

systemctl enable rke2-server.service
systemctl start rke2-server.service

8、检查日志

journalctl -u rke2-server -f

日志里面的过程其实就是:
1、第一步在本地运行tarball.

  • 从本地路径 /root/rke2-artifacts/sha256sum-amd64.txt 获取校验和文件。
  • 从本地路径 /root/rke2-artifacts/rke2-images.linux-amd64.tar.zst 获取 airgap 镜像 tarball。
  • 从本地路径 /root/rke2-artifacts/rke2.linux-amd64.tar.gz 获取 RKE2 tarball。
  • 验证 airgap tarball。
  • 将 airgap tarball 安装到 /var/lib/rancher/rke2/agent/images

2、解压我们放入到 /var/lib/rancher/rke2/agent/images/的镜像。

9、访问集群

1、环境变量搞起来。

rke2-server:/ # cat /etc/profile.local
export PATH=$PATH:/var/lib/rancher/rke2/bin/
export KUBECONFIG=/etc/rancher/rke2/rke2.yaml

很顺利能访问api-server.

2、同时我们也测试一下Mysql的访问与k8s联动。

k8s侧创建一个namespace:

Mysql侧:

 SELECT * FROM kine WHERE name LIKE '%namespace%';

可以看到是OK的。

*即k8s侧创建一个namespace,mysql等数据库能看到。说明验证了k8s侧是使用的mysql的数据库。

9、加入worker节点。

1、我们部署好了server节点后,先检查健康状态。

2、健康状态ok后,我们将安装的部署包放入到worker节点上进行安装。

将镜像文件到上传指定目录和Server节点一样。

3、worker节点配置文件。

mkdir -p /etc/rancher/rke2/

vim /etc/rancher/rke2/config.yaml

server: https://172.30.0.214:9345

token: K10d976665f6xxxxx31409743b14396b7bbec894::server:SECRET

*获取节点server节点的token.

在server节点的 /var/lib/rancher/rke2/server/token目录下获取:

cat /var/lib/rancher/rke2/server/token

4、信任server节点的CA证书

获取server- CA证书-ls /var/lib/rancher/rke2/server/tls/server-ca.crt

 /var/lib/rancher/rke2/server/tls/server-ca.crt

worker节点信任证书

cp ./server-ca.crt  /usr/share/pki/trust/anchors/

update-ca-certificates

测试证书访问:

4、加入工作节点

*我们的安装脚本里面有server和worker节点的安装脚本都有。

他只会看配置文件以及你启动的命令来确定你是server节点还是worker节点。

chmod +x install.sh

INSTALL_RKE2_ARTIFACT_PATH=/root/rke2-artifacts sh install.sh

启用tarball.

你正在使用 install.sh 脚本安装 RKE2,并且指定了本地的安装包路径。以下是安装过程中的一些关键步骤和信息:

  1. 设置本地安装包路径 : 你已经设置了 INSTALL_RKE2_ARTIFACT_PATH 环境变量,指向本地的安装包路径 /root/rke2-artifacts

  2. 安装脚本输出: 安装脚本正在执行以下操作:

    • 从本地路径 /root/rke2-artifacts/sha256sum-amd64.txt 获取校验和文件。
    • 从本地路径 /root/rke2-artifacts/rke2-images.linux-amd64.tar.zst 获取 airgap 镜像 tarball。
    • 从本地路径 /root/rke2-artifacts/rke2.linux-amd64.tar.gz 获取 RKE2 tarball。
    • 验证 airgap tarball。
    • 将 airgap tarball 安装到 /var/lib/rancher/rke2/agent/images
    • 验证 RKE2 tarball。
    • 将 RKE2 tarball 解压到 local。

启动worker节点。

systemctl start rke2-agent.service

systemctl enable rke2-agent.service

*单独开一个终端查看部署过程。

journalctl -u rke2-agent -f

到这里基本就ok了。

*在server节点验证节点加入。

kubectl get nodes


总结

1、这边文章重点展示了离线部署RKE2与使用外部的Mysql来存储k8s的键值存储。

2、以及离线部署rke2集群-server节点与worker节点。

相关推荐
A ?Charis2 天前
第三章-SUSE- Rancher-容器高可用与容灾测试-Rancher-外置数据库(复用Mysql)
rancher
AKA小徐1 个月前
Debian12使用RKE2离线部署3master2node三主两从的k8s集群详细教程
kubernetes·rancher·rke2
long_songs2 个月前
kubectl rancher等重启之后服务起不来一分钟解决(另类方案)did you specify the right host or port?
linux·运维·服务器·kubernetes·kubectl·rancher·kubelet
十一呓语2 个月前
k8s+rancher配置滚动发布更新时服务不可用
java·kubernetes·rancher
欧阳潇瑞2 个月前
Ubuntu24 cgroupv2导致rancher(k3s)启动失败的处理
rancher
A ?Charis3 个月前
解决部署RKE2或K3S-“docker.io/rancher/mirrored-pause:3.6\“: -无法拉取镜像办法
docker·容器·rancher
KTKong3 个月前
kubernetes部署rancher无法查看pod日志及通过execute shell进入pod解决办法
容器·kubernetes·rancher
橘淮南枳3 个月前
Rancher—多集群Kubernetes管理平台
云原生·容器·kubernetes·rancher
ascarl20103 个月前
k8s系列-Rancher 上操作的k8s容器网络配置总结
网络·kubernetes·rancher