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

发布于:2025-02-10 ⋅ 阅读:(112) ⋅ 点赞:(0)

系列文章目录


第一章-SUSE- Rancher-容器高可用与容灾测试-RKE2-外置数据库(Mysql主备集群搭建)

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

第三章-SUSE- Rancher-容器高可用与容灾测试-Rancher-(离线helm部署)

第四章-SUSE- Rancher-容器高可用与容灾测试-RKE2-数据库(Mysql主备倒换容灾)

第五章-SUSE- Rancher-容器高可用与容灾测试-Rancher-(使用Rancher-backup-异地还原测试)

第六章-SUSE- Rancher-容器高可用与容灾测试-RKE2-数据库(Mysql-异地备份还原方式容灾)

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

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


目录

系列文章目录

前言

一、云主机

1.1 创建RKE2集群的云主机

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

2.1 RKE2节点启动的过程

2.1.1 内容引导

2.1.2 初始化 Server

2.1.3 启动集群

2.1.3 ETCD

2.2 Tarball方法安装步骤

2.2.1 下载RKE2-image文件

2.2.2 进入RKE2项目-Releases​​​​​​​​​​​​​​

2.2.3 我们计划部署测试的Rancher Manager v2.9.5,故我们需要查阅兼容性

2.2.3.1 首先是RKE2与OS的兼容性。

2.2.3.2 然后是RKE2与Rancher的兼容性。

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

2.4 下载安装脚本

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

2.5 放入文件与下载的镜像。 

2.6 rke2配置/etc/rancher/rke2/config.yaml

2.7 RKE2 运行脚本文件安装

2.8 检查日志

2.9 访问集群

2.9.1 环境变量搞起来。

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

2.10 加入worker节点。

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

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

2.10.3 worker节点配置文件。

2.10.4 信任server节点的CA证书

总结​​​​​​​


前言

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

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


一、云主机

1.1 创建RKE2集群的云主机

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

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

2.1 RKE2节点启动的过程

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

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

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

2.1.1 内容引导

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

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

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

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

2.1.2 初始化 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节点:

2.1.3 启动集群

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

2.1.3 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,这意味着 etcd 和 kube-apiserver 将依次启动,允许其余组件通过静态 pod 启动,从而连接到 kube-apiserver 并开始处理。

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

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

3、使用helm-controller

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

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

2.2 Tarball方法安装步骤

2.2.1 下载RKE2-image文件

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

RKE2提供2种方式:

1、一种是Tarball 方法

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

本次测试Tarball方法:

2.2.2 进入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/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/releases

2.2.3 我们计划部署测试的Rancher Manager v2.9.5,故我们需要查阅兼容性

2.2.3.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/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.2.3.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/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.3 使用外网节点下载必要的安装镜像

根据官网离线安装指引。

*我们需要下载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文件可以显示下载的镜像目录,很方便看到。

2.4 下载安装脚本

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

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

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

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

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

2.5 放入文件与下载的镜像。 

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

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

脚本才会用systemd在后台运行

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

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

2.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/的镜像。


2.9 访问集群

2.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.9.2 同时我们也测试一下Mysql的访问与k8s联动。

k8s侧创建一个namespace:

Mysql侧:
 

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

可以看到是OK的。 

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

2.10 加入worker节点。

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

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

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

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

2.10.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节点。


网站公告

今日签到

点亮在社区的每一天
去签到