系列文章目录
第一章-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(容灾卷跨集群测试)
[2.1 调度备份](#2.1 调度备份)
[2.1.1 Rancher-backup进行一次最新备份](#2.1.1 Rancher-backup进行一次最新备份)
[2.2 部署rke2节点。](#2.2 部署rke2节点。)
[2.2.1 异地重新部署2个4C 8G rke2节点,这次使用原生etcd数据库。](#2.2.1 异地重新部署2个4C 8G rke2节点,这次使用原生etcd数据库。)
[2.3 helm部署Rancher-bakeup](#2.3 helm部署Rancher-bakeup)
[2.3.1 前提条件](#2.3.1 前提条件)
[2.3.2 添加 Rancher Helm 仓库](#2.3.2 添加 Rancher Helm 仓库)
[2.3.3 创建命名空间(可选)](#2.3.3 创建命名空间(可选))
[2.3.4 安装 Rancher Backup以及Rancher Backup-crd](#2.3.4 安装 Rancher Backup以及Rancher Backup-crd)
[2.3.5 验证安装](#2.3.5 验证安装)
[2.3.6 恢复备份](#2.3.6 恢复备份)
[2.4 安装cert-Manager](#2.4 安装cert-Manager)
[2.5 部署Rancher](#2.5 部署Rancher)
[2.5.1 这里有个细节。](#2.5.1 这里有个细节。)
[2.5.2 通过values部署Rancher](#2.5.2 通过values部署Rancher)
[2.5.3 检查Rancher状态](#2.5.3 检查Rancher状态)
[2.5.4 测试访问](#2.5.4 测试访问)
[2.5.5 验证恢复](#2.5.5 验证恢复)
前言
第一章我们搭建好了Mysql(主备复制)实例。
第二章我们搭建好Rancher管理集群的基础设施- RKE2集群-Tarball方法-离线。
第三章我们使用helm离线方式部署好了Rancher到RKE2集群中,同时使用Rancher-backup-调度了一次备份任务到阿里云的对象存储。
第四章 我们模拟主数据中心故障,将RKE2集群进行了恢复。
本章节,我们使用Rancher-backup对Rancher进行异地还原。
一、Rancher-backup-容灾测试。
1.1 调度备份
1.1.1 Rancher-backup进行一次最新备份
1.2 部署rke2节点。
1.2.1 异地重新部署2个4C 8G rke2节点,这次使用原生etcd数据库。
**Server节点与Worker节点从阿里云OSS上获取镜像和安装脚本文件。
*模拟真实还原场景。
*也可以下载到一个节点后从节点分发。
**目的就是为了快速让节点获取到镜像和配置文件。
**两个节点分别创建配置文件目录以及镜像目录
sqlmkdir -p /etc/rancher/rke2/ && mkdir -p /var/lib/rancher/rke2/agent/images/
**两个节点分别复制对应的文件到想要的目录下:
sql
cp config.yaml registries.yaml /etc/rancher/rke2/
cp rke2-images-cilium.linux-amd64.tar.zst rke2-images-core.tar /var/lib/rancher/rke2/agent/images/
*验证一手
Server节点修改配置文件-config.yaml:
sql
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
修改配置文件-registries.yaml:
sql
mirrors:
"*":
endpoint:
- "https://mnt026bf.mirror.aliyuncs.com"
- "https://registry.cn-hangzhou.aliyuncs.com"
开始安装Server节点:
sql
INSTALL_RKE2_ARTIFACT_PATH=/root/rke2 sh install.sh
systemctl start rke2-server.service
监控一下安装:
sql
journalctl -u rke2-server.service -f
出现:
**出现keep-alive的ping就差不多了。
配置环境变量:
sql
vim /etc/profile.local
kubectl get nodes
继续安装Worker节点:
**修改配置文件-config.yaml:
**server节点获取加入的token:
sql
cat /var/lib/rancher/rke2/server/node-token
**worker节点展示:
**worker节点镜像配置展示:
**启动worker节点:
sqlINSTALL_RKE2_ARTIFACT_PATH=/root/rke2 sh install.sh systemctl start rke2-agent.service
**观察日志
**Server节点验证:
**这里的ingress-nginx报错:
*因为阿里云的镜像没有安装iptables,安装即可。 而kube-proxy默认使用ipbtales来4层LB负载。
**安装好ipbtales就好了。
1.3 helm部署Rancher-bakeup
1.3.1 前提条件
-
已安装 Helm:确保已安装 Helm v3 或更高版本。
-
Kubernetes 集群 :目标集群已就绪,且
kubeconfig
配置正确。 -
Rancher 兼容性 :确认 Rancher Backup 版本与您的 Rancher 版本兼容。
1.3.2 添加 Rancher Helm 仓库
sql
helm repo add rancher-charts https://charts.rancher.io
helm repo update
1.3.3 创建命名空间(可选)
sql
kubectl create namespace cattle-resources-system
1.3.4 安装 Rancher Backup以及Rancher Backup-crd
sql
helm install rancher-backup-crd rancher-charts/rancher-backup-crd -n cattle-resources-system --create-namespace
helm install rancher-backup rancher-charts/rancher-backup \
--namespace cattle-resources-system
1.3.5 验证安装
检查 Pod 状态:
sql
kubectl get pods -n cattle-resources-system -l app.kubernetes.io/name=rancher-backup
输出应显示 Running
状态。
1.3.6 恢复备份
这里简单说一下Rancher-backup的原理,创建了3个自定义资源:
Backup 备份
*创建备份任务
Restore 还原
*创建还原任务
ResourceSet 资源集
**定义备份的资源是哪些
工作流:
1、创建一个ResourceSet,以您要备份的所有资源为目标。
2、执行备份:要进行备份,用户必须创建备份CRD的实例(创建备份CR)。
3、从备份恢复:要从备份恢复,用户必须创建还原CRD的实例(创建还原CR)
从上一章的OSS 创建的中备份恢复
创建S3存储的访问凭证:
sql
kubectl create secret generic s3-creds \
--from-literal=accessKey=<access key> \
--from-literal=secretKey=<secret key>
本次案例的restore.yaml
:
sql
# restore.yaml
apiVersion: resources.cattle.io/v1
kind: Restore
metadata:
name: restore
spec:
backupFilename: thesectimebackup-1c9dbfa6-0c64-41c5-ac10-dc9e7b59cc81-2025-01-28T07-30-43Z.tar.gz
prune: false
storageLocation:
s3:
bucketName: for-rancher-backup
credentialSecretName: s3-creds
credentialSecretNamespace: default
endpoint: oss-cn-shanghai-internal.aliyuncs.com
region: cn-shanghai
s3:
bucketName: for-rancher-backup
credentialSecretName: s3-creds
credentialSecretNamespace: default
endpoint: oss-cn-shanghai-internal.aliyuncs.com
region: cn-shanghai
sql
kubectl create -f restore.yaml -n cattle-resources-system
**监控还原任务。
sql
kubectl logs -n cattle-resources-system --tail 100 -f -l app.kubernetes.io/instance=rancher-backup
**出现Completd.
一旦还原资源的状态为
Completed
,您就可以继续cert-Manager和Rancher安装。
1.4 安装cert-Manager
**之前阿里云的OSS应该上传cert-Manager的镜像的tar包以及对应的Chart包。我忘记了。
sql
# Install the cert-manager Helm chart
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--set installCRDs=true
**因为我的节点使用的是代理镜像仓库,从外网节点传递Chart包就可以了,不用担心镜像的问题。
**私有仓库也不用担心,只要异地有镜像同步的仓库就行。
**检查cert-manager状态
1.5 部署Rancher
**逻辑也是一样,传递镜像包或者镜像仓库能访问。
**配置文件Chart上传OSS。
1.5.1 这里有个细节。
就是之前部署Rancher的values.yaml文件,一定要注意备份。下面展示提取的命令,因为我的测试环境配置修改的就只是set -- hostname 没有其它的则没有做这一步。
helm get values rancher -n cattle-system -o yaml > rancher-values.yaml
1.5.2 通过values部署Rancher
helm install rancher rancher-latest/rancher -n cattle-system -f rancher-values.yaml --version x.y.z
**我的测试环境两边的Rancher都只传递了一个set hostname的values.则可以通过简单的cli去执行。
helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=rancher.demo --version 2.9.3
1.5.3 检查Rancher状态
kubectl get po -n cattle-system
1.5.4 测试访问
**先修改hosts文件
**访问rancher.demo
**可以看到如果不是因为备份还原成功了,那么这里会出现第一次登陆让你输入密码。
**证明容灾测试成功了。
1.5.5 验证恢复
**输入备份之前的密码,成功登陆。
总结
1、本篇文章主要是模拟Rancher-back up 恢复故障集群的实验。
2、Rancherback up有老师可以实现恢复无状态应用,我感觉不行,我下次试试。