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

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

系列文章目录


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

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

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

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

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

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

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

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


目录

系列文章目录

前言

一、Rancher纳管rke2集群01

1.1 纳管外部集群

1.2 加入集群

1.3 处理pod的DNS问题

 1.4 验证添加

二、rke2集群01部署longhorn

2.1 通过App-Charts

2.2 检查系统要求

2.3 满足系统要求

2.3.1 Runtime

2.3.2 K8s

2.3.3 Linux-cli

2.4 配置longhorn

2.4.1 使用默认配置即可

​编辑

2.4.2  等待安装

2.4.3 验证安装 

二、创建新rke2集群02

2.1 创建主机

2.2 通过Rancher部署rke2

2.3 修改仓库配置文件

2.4 主机安装

2.5 监控安装过程

2.6 验证拉起

三、部署longhorn

3.1 安装需要的CLI命令

3.2 安装

3.3 验证

四、打快照

4.1 启动快照

4.2 监控

4.3 快照验证

4.3.1 快照位置

五、部署测试pod

5.1 添加仓库

5.2 安装外部-ZooKeeper(Kafka依赖)-可选

5.2.1 验证ZooKeeper

5.3 安装kafka-内部ZooKeeper

5.3.1 关闭kraft模式

5.3.2 验证安装

5.3.3 Rancher验证

5.3.4 再次打快照

5.3.5 检查快照

六、还原测试

6.1 还原不包括kafka的快照

6.1.1 helm记录

6.1.2 看看pvc

 6.2 还原到最新的有kafka的快照

6.2.1 还原准备

6.2.2 监控进程

6.2.3 等待还原

6.2.4 检查业务

七、升级集群并且写入数据快照还原测试

7.1 降级集群

7.2 kafka中写入数据打快照还原测试

7.3 升级集群打快照还原测试

总结 


前言

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

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

第三章我们使用helm离线方式部署好Rancher到RKE2集群中,同时使用Rancher-backup-调度了一次备份任务到阿里云的对象存储。

第四章 我们模拟主数据中心数据库故障,将RKE2进行Mysql数据库主备倒换。

第五章,我们使用Rancher-backup对Rancher进行异地还原。

第六章,我们模拟主数据中心数据库故障,将RKE2的Mysql数据库通过备份还原。

本章,我们做几件事情:

        1、Rancher操作第六章我们使用rke2数据库备份还原的集群部署longhorn.(为了给最终章做准备)

        2、新建1台云主机,使用Rancher创建rke2集群-ETCD数据库。

                1、对其进行部署longhorn,此时打快照。

                2、再部署kafka.

                3、进行快照还原,测试快照还原元数据。

        3、kafka写入两次数据,分别打快照。

                1、测试还原是否会丢数据。

        4、升级集群一个版本打快照。

                1、测试升级和快照降级集群还原测试。

        5、修改api-server配置文件

                1、测试修改Cluster config api-server还原。


一、Rancher纳管rke2集群01

1.1 纳管外部集群

1.2 加入集群

**等待Pod-Runing

1.3 处理pod的DNS问题

如果是域名访问且主机的DNS没有解析条目,可以单独修改coredns添加主机。

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |-
    .:53 {
        errors
        health {
            lameduck 5s
        }
        ready
        kubernetes cluster.local cluster.local in-addr.arpa ip6.arpa {
            pods insecure
            fallthrough in-addr.arpa ip6.arpa
            ttl 30
        }
        hosts {
            172.31.0.32 rancher.demo
            fallthrough
        }
        prometheus 0.0.0.0:9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }

 1.4 验证添加

二、rke2集群01部署longhorn

2.1 通过App-Charts

2.2 检查系统要求

2.3 满足系统要求

2.3.1 Runtime

containerd://1.7.23-k3s2

满足v1.3.7+

2.3.2 K8s

 v1.30.9+rke2r1
满足v1.21

2.3.3 Linux-cli

*安装
zypper install bash curl findmnt grep awk blkid open-iscsi  
*检查是否安装
zypper se --installed-only bash curl findmnt grep awk blkid open-iscsi

2.4 配置longhorn

2.4.1 使用默认配置即可

2.4.2  等待安装

2.4.3 验证安装 

二、创建新rke2集群02

2.1 创建主机

2.2 通过Rancher部署rke2

2.3 修改仓库配置文件

2.4 主机安装

**如果DNS没有就添加host解析。

2.5 监控安装过程

 journalctl -u rancher-system-agent.service -f

**出现这个报错不用管,是因为下面的进程正在启动。 

journalctl -u rke2-server.service -f 

**出现这个不用管,因为Runtime还在拉取镜像,还没到静态的ETCD启动的时候。 

2.6 验证拉起

**有个细节,你需要修改coredns的Rancher解析。

三、rke2集群02部署longhorn

3.1 安装需要的CLI命令

*安装
zypper install bash curl findmnt grep awk blkid open-iscsi  
*检查是否安装
zypper se --installed-only bash curl findmnt grep awk blkid open-iscsi

3.2 安装

3.3 验证

四、rke2集群02打快照

4.1 启动快照

4.2 监控

4.3 rke2集群02快照验证

4.3.1 快照位置

/var/lib/rancher/rke2/server/db/snapshots

五、rke2集群02部署测试pod

计划部署kafka进行测试。

5.1 添加仓库

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

国内平替

helm repo add appstore https://charts.grapps.cn

helm repo update appstore

5.2 安装外部-ZooKeeper(Kafka依赖)-可选

Kafka依赖ZooKeeper管理元数据,Bitnami的Kafka Chart默认会自动安装ZooKeeper,但建议显式配置。

helm install zookeeper appstore/zookeeper --set replicaCount=2 --set persistence.storageClass=longhorn --set persistence.size=20Gi  --version 11.4.9 --namespace=kafka --create-namespace

5.2.1 验证ZooKeeper

5.3 安装kafka-内部ZooKeeper

5.3.1 关闭kraft模式

helm install kafka appstore/kafka --set persistence.storageClass=longhorn --set persistence.size=3Gi  --namespace=kafka --set zookeeper.enabled=true --version=23.0.7 --set kraft.enabled=false

5.3.2 验证安装

5.3.3 Rancher验证

5.3.4 再次打快照

5.3.5 检查快照

我们此时有两个快照,一个包括kafka,一个不包括kafka. 

**这里多了一个自动备份快照。

12:19 是不包括kafka的快照。

4.34 是包括kafka的快照。 

六、etcd方式还原测试

Rancher方便了还原,底层的还原步骤和逻辑是这样的:

 

**验证: 

6.1 还原不包括kafka的快照

only etcd
Kubernetes version and etcd 
Cluster Config , Kubernetes version and etcd 
 

  • only etcd: 仅还原etcd数据,不会改变当前集群的Kubernetes版本和其他配置。适用于集群配置保持不变,仅需恢复数据的场景。
  • Kubernetes version and etcd: 同时还原Kubernetes版本和etcd数据,但不覆盖集群的其他配置。适用于需要将Kubernetes版本一起恢复到快照时的场景。
  • Cluster Config, Kubernetes version and etcd: 完整还原集群配置、Kubernetes版本以及etcd数据。适用于需要完整恢复集群所有状态(包括配置、版本和数据)的场景。

**我们的场景属于第一种。 

**集群开启还原后,会停止服务,等待etcd还原。 


*监控进程
journalctl -u rancher-system-agent.service -f

  

**等待状态正常即可。 

**检查还原状态

**kafka没了。 还原测试成功。

6.1.1 helm记录

**helm记录也没了

6.1.2 看看pvc

kafka创建pvc也没了

 6.2 还原到最新的有kafka的快照

6.2.1 还原准备

6.2.2 监控进程


*监控进程
journalctl -u rancher-system-agent.service -f


*监控进程
journalctl -u rke2.server.service -f

 **开始停止容器服务。

**开始启动rke2-server进程,恢复etcd进程完毕。 

6.2.3 等待还原

 

6.2.4 检查业务

**kafka还原回来了

 **PVC也回来了

6.2.5 测试结果

1、可以还原集群的元数据。

6.3 跨版本恢复元数据

有一个场景,我们不需要只希望恢复元数据,不希望恢复集群版本。

我们找两个快照来测试。符合跨版本以及有元数据差异的场景。

我们在当年的v1.29版本创建一个namespace来模拟元数据修改,打一个快照。

 

2:35是v1.30.8+rke2r1版本没有for-snmpshot01的版本。

3:12是v1.29版本有for-snmpshot01的版本。

期望结果是恢复到2:35的版本,集群版本还是v1.29但是没有for-snmpshot01的命名空间。

**测试结果

1、没有namespace测试成功。

2、cm、secret的数据修改也会还原回来。

**因为在之前的快照中这里我们是添加了Rancher的hosts解析的。

3、测试成功。 

七、kubernetes version以及etcd方式-还原测试

升级集群并且写入数据快照还原测试

7.1 降级集群

**我这里已经是最新版本了,我删除一下节点降级一下。

**新建节点之前需要卸载和删除之前的数据,最好重启一下。

rke2 kill-all.sh

rke2 uninstall.sh

**新建一个集群。版本降低一下。

**操作一样的,等待集群节点起来。

7.2 kafka中写入数据打快照还原测试

 **进入kafka内部

**写入测试数据

# 在 Pod 内部使用 kafka-console-producer 发送消息
kafka-console-producer.sh \
  --broker-list localhost:9092 \
  --topic test-topic

# 输入消息(按行发送,Ctrl+C 退出)
Hello, Kafka!
This is a test message.

 **验证测试数据

kafka-console-consumer.sh \
    --bootstrap-server localhost:9092 \
    --topic test-topic \
    --from-beginning

**打快照

我现在是连接着kafka的pod

点击打快照

**说明打快照业务是无感知的。

**写入更多的测试数据

写入 sec enter 以及 sec hello!

 **再次进行快照并且进行快照还原。

看是否只有Hello,Kafka! 以及This is a test message.

**此时有多个快照

12:20 的数据只有Hello,Kafka! 以及This is a test message.
12:24 的数据增加了sec enter 以及 sec hello!
我们还原到12:20的快照。

**看到还原选项只选择etcd 

**等待还原完成

**检查kafka数据

**这里可以看到还原选项只选择etcd只会还原元数据,业务数据是不会修改的。 
**也就是说快照只能作为元数据的容灾。

7.3 升级集群打快照还原测试

**选择继续,然后升级集群。

**等待升级完成。

**检查各种系统组件以及业务状态。

**业务pod

**检查业务数据

**升级之后业务pod和业务数据都在。

**我们此时打一个快照,看看能不能通过快照还原k8s版本。

  

**2:35是v1.30.8+rke2r1版本

**我们还原到12:24,v1.29.12+rke2r1的版本。

**开始还原:

**等待还原完成。

**检查集群系统组件状态和业务数据

**业务数据没丢 

八、还原测试-Cluster Config, Kubernetes version and etcd

Cluster Config指的是:

  • 集群配置

    • 控制平面组件(kube-apiserver、kube-controller-manager、kube-scheduler)的启动参数。

    • 节点 kubelet 配置(如 /var/lib/kubelet/config.yaml)。

    • 网络插件(如 Calico、Cilium)的配置文件和 CRD。

    • 存储类(StorageClass)、持久卷(PV/PVC)配置。

**其实这里的Cluster Config 简单来说就是指不保存在etcd的数据,比如静态pod和节点的kubelet的配置,其它插件的配置文件是会保存configmap或者secret等地方是保存在etcd里面的。

**我们修改api-server的启动参数来进行测试。

- --service-node-port-range=30000-32767

rancher-rke2 修改--service-cluster-ip-range_rke2 安装的ingress 怎么修改配置文件-CSDN博客

**这里是非Rancher创建集群的修改教程。

**先打快照

**下面是Rancher管理后的下游集群修改教程

 

**修改成功后api-server重启,我们检查配置,range为25000-65535了。

**我们执行还原,期望结果为range为30000-32767.

还原成功!

**测试结果

1、成功还原


全文总结
本文主要介绍了在 SUSE Rancher 中进行容器高可用与容灾测试,包括使用 Rancher 拉起的集群进行容灾测试的详细步骤。涵盖了 Rancher 纳管 rke2 集群、在集群上部署 longhorn、创建新集群、在新集群部署 longhorn 和测试 pod、打快照、进行 etcd 方式还原测试以及跨版本恢复元数据等内容。
重要亮点

  • Rancher 纳管 rke2 集群:介绍了纳管外部集群、加入集群、处理 pod 的 DNS 问题和验证添加的步骤。
  • rke2 集群部署 longhorn:包括通过 App-Charts 安装、检查和满足系统要求、配置 longhorn 以及验证安装。
  • 创建新 rke2 集群:创建主机、通过 Rancher 部署 rke2、修改仓库配置文件、主机安装、监控安装过程和验证拉起。
  • rke2 集群打快照:启动快照、监控和验证快照位置。
  • rke2 集群部署测试 pod:添加仓库、安装外部 ZooKeeper 和内部 Kafka、验证安装、Rancher 验证、再次打快照和检查快照。
  • etcd 方式还原测试:还原不包括 kafka 的快照和还原到最新的有 kafka 的快照,包括还原准备、监控进程、等待还原、检查业务和测试结果,还介绍了跨版本恢复元数据。
  • kubernetes version 以及 etcd 方式还原测试:降级集群、在 kafka 中写入数据打快照还原测试和升级集群打快照还原测试。
  • Cluster Config还原测试:通过修改api-server参数来测试还原。
  • 还原测试总结:对整个还原测试过程进行总结。