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

系列文章目录

第一章-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(容灾卷跨集群测试)


文章目录

目录

系列文章目录

文章目录

前言

一、部署Rancher

[思路: 1、搞定镜像-两种方式](#思路: 1、搞定镜像-两种方式)

2、案例-使用代理仓库:

1、测试到你的仓库网络可达。

2、配置镜像加速仓库

3、案例-使用私有仓库方式

[1、找一台节点部署私有仓库 (也可以复用其它的节点)](#1、找一台节点部署私有仓库 (也可以复用其它的节点))

[2、 测试推送和拉取](#2、 测试推送和拉取)

4、根据官方指引,Rancher镜像我们需要获取3个文件:

5、获取cert-manager镜像

[6、获取最新的 cert-manager Helm Chart,并解析模板以获取镜像的详情信息:*你的外网节点需要安装helm.](#6、获取最新的 cert-manager Helm Chart,并解析模板以获取镜像的详情信息:*你的外网节点需要安装helm.)

[7、 对镜像列表进行排序和唯一化,以去除重复的镜像源:](#7、 对镜像列表进行排序和唯一化,以去除重复的镜像源:)

[8. 将镜像保存到你的工作站中](#8. 将镜像保存到你的工作站中)

二、获取Rancher-helm文件

1、helm离线部署需要的传递的SSL配置选项

2、离线仓库配置

[三、获取 Cert-Manager Chart](#三、获取 Cert-Manager Chart)

[1. 添加 cert-manager 仓库](#1. 添加 cert-manager 仓库)

[2. 获取 cert-manager Chart](#2. 获取 cert-manager Chart)

[3. 检索 Cert-Manager CRD](#3. 检索 Cert-Manager CRD)

[四、安装 Rancher](#四、安装 Rancher)

1、安装cert-mananger

[2. 安装 Rancher](#2. 安装 Rancher)

3.查看Cattle-system状态

4.访问Rancher-Ui

五、部署Rancher-backup

1、创建Apps-Rancher-backup

2、配置阿里云OSS

3、配置Rancher-backup

4、开始部署安装

5、调度一个备份任务

总结​​​​​​​


前言

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

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

本章我们计划使用helm-离线部署安装Rancher到RKE2集群中。


一、部署Rancher

思路:

1、搞定镜像-两种方式

1、配置镜像加速

即你的仓库可以访问国外仓库进行代理,你的Rancher节点通过访问他加速。

2、配置私有仓库

纯本地私有化部署,提前拉取所有涉及的镜像放置在本地仓库中。

2、案例-使用代理仓库:

我在阿里云香港节点搭建了自己的镜像加速站,我就模拟这个为自己的私有仓库。感兴趣的可以看看。相当于你节点使用加速,但是因为我这里的节点在公网上,私网是跨vpc的要收流量费,所以我仅展示配置过程。
记录一次、自己搭建镜像加速站的过程-CSDN博客

1、测试到你的仓库网络可达。

2、配置镜像加速仓库

*默认会全部走镜像仓库。这里模拟的是阿里云加速的地址。你自己的镜像加速站替换为你自己的即可。

可以像我一样配置多个。

因为阿里云加速是没有Rancher镜像的,Rancher购买的有企业镜像示例,可以通过下面的地址拉取。

这个仓库配置好后,会重启起的rke2-server默认会向runtime-也就是containrd添加配置文件。

ls /var/lib/rancher/rke2/agent/etc/containerd/certs.d/

*这种方式是用仓库代理镜像的方式。即拉取不到docker.io就替换docker.io为你的镜像地址。

生产环境也可以这么走代理使用,也可以直接访问私有仓库去拉取。

3、案例-使用私有仓库方式

最简单的例子:

外网节点使用registry部署仓库,然后rke2节点使用http去拉取。

1、找一台节点部署私有仓库 (也可以复用其它的节点)

编写docker-compose.yaml

version: '3'

services:
  registry:
    image: registry:2
    ports:
      - "5000:5000"
    volumes:
      - /root/docker-registry/registry-data:/var/lib/registry

 mkdir -p /root/docker-registry/registry-data

docker-compose up

2、 测试推送和拉取

推送到仓库节点的Runtime需要配置:

{
  "log-level": "warn",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "5"
  },
  "registry-mirrors": ["https://xxxxmirror.aliyuncs.com"],
  "insecure-registries": ["172.30.0.213:5000"]
}

*要配置跳过https证书检查"insecure-registries": ["172.30.0.213:5000"],

mirrors:
  "*":
    endpoint:
      - "https://registry.example.com:5000"
configs:
  "docker.io":
  "*":
    tls:
      insecure_skip_verify: true

*上面两种方式选其一即可。

4、根据官方指引,Rancher镜像我们需要获取3个文件:

rancher-images.txt : 镜像列表

rancher-save-images.sh : 会将列表中的镜像拉取并且通过save打包。

rancher-load-images.sh :会将打包tar镜像load你的本地节点上。

.9 · Releases · rancher/rancher · GitHubComplete container management platform. Contribute to rancher/rancher development by creating an account on GitHub.https://github.com/rancher/rancher/releases?expanded=true&page=2&q=.9https://github.com/rancher/rancher/releases?expanded=true&page=2&q=.9

*在你的外网节点上获取这3个文件。

mkdir -p /root/rancher/rancher_image

5、获取cert-manager镜像

*如果你私有云或者阿里云部署了F5/nginx或者ALB那么这步可以跳过。

*如果你单独为rancher申请了证书也可以跳过。

6、获取最新的 cert-manager Helm Chart,并解析模板以获取镜像的详情信息:

*你的外网节点需要安装helm.

helm repo add jetstack https://charts.jetstack.io
helm repo update
helm fetch jetstack/cert-manager
helm template ./cert-manager-<version>.tgz | awk '$1 ~ /image:/ {print $2}' | sed s/\"//g >> ./rancher-images.txt

*他会添加Chart仓库

*更新Chart仓库

*额外需要你填写cert-manager的版本。

*一般来说cert-manager高于0.12.0 版本都行。

7、 对镜像列表进行排序和唯一化,以去除重复的镜像源:

sort -u rancher-images.txt -o rancher-images.txt

8. 将镜像保存到你的工作站中

  1. rancher-save-images.sh 文件添加可执行权限:

    chmod +x rancher-save-images.sh
    

    使用 rancher-images.txt 镜像列表执行 rancher-save-images.sh 脚本,以创建包含所有所需镜像的压缩包:

   ./rancher-save-images.sh --image-list ./rancher-images.txt

结果 :Docker 开始拉取用于离线安装的镜像。请耐心等待。这个过程需要几分钟。完成时,你的当前目录会输出名为 rancher-images.tar.gz 的压缩包。请确认输出文件是否存在。

*耐心等待几分钟,等待拉取打包完毕。

*打包完毕然后传到私有仓库中。

./rancher-load-images.sh --image-list ./rancher-images.txt --registry <REGISTRY.YOURDOMAIN.COM:PORT>

*这里重点说一下,仓库至少需要100个G。

二、获取Rancher-helm文件

外网节点添加仓库:

helm repo add rancher-stable https://releases.rancher.com/server-charts/stable

下载对应版本的helm-Chart文件:

helm fetch rancher-stable/rancher --version=v2.9.3

1、helm离线部署需要的传递的SSL配置选项

ingress.tls.source=rancher *默认

ingress.tls.source=secret FALSE *需要配置

2、离线仓库配置

*certmanager.version:<version>

*systemDefaultRegistry:<REGISTRY.YOURDOMAIN.COM:PORT>

**这个配置如果是私有仓库则需要配置上,如果是镜像加速则不用。

*useBundledSystemChart:true

三、获取 Cert-Manager Chart

默认情况下,Rancher 会生成一个 CA 并使用 cert-manager 颁发证书以访问 Rancher Server 界面。

1. 添加 cert-manager 仓库

在可以连接互联网的系统中,将 cert-manager 仓库添加到 Helm:

helm repo add jetstack https://charts.jetstack.io
helm repo update

2. 获取 cert-manager Chart

Helm Chart 仓库中获取最新可用的 cert-manager Chart:

helm fetch jetstack/cert-manager

3. 检索 Cert-Manager CRD

为 cert-manager 下载所需的 CRD 文件:

curl -L -o cert-manager-crd.yaml https://github.com/cert-manager/cert-manager/releases

四、安装 Rancher

1、安装cert-mananger

如果你使用自签名证书,安装 cert-manager:

  1. 为 cert-manager 创建命名空间:

    kubectl create namespace cert-manager
    
  2. 创建 cert-manager CustomResourceDefinition (CRD)。

    kubectl apply -f cert-manager/cert-manager-crd.yaml
    
  3. 安装 cert-manager。

  4. *节点上的helm可以通过传递过去。

    helm install cert-manager ./cert-manager-<VERSION>.tgz \
        --namespace cert-manager \
        --set image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-controller \
        --set webhook.image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-webhook \
        --set cainjector.image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-cainjector \
        --set startupapicheck.image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-ctl
    

使用要用于安装 Chart 的选项来安装 cert-manager。记住要设置 image.repository 选项,以从你的私有镜像仓库拉取镜像。此操作会创建一个包含 Kubernetes manifest 文件的 cert-manager 目录。

2. 安装 Rancher

首先,参见添加 TLS 密文发布证书文件,以便 Rancher 和 Ingress Controller 可以使用它们。

*我们是自签名证书由Rancher管理不涉及哈,如果需要使用自己的CA证书替换SECRET即可

然后,使用 kubectl 为 Rancher 创建命名空间:

kubectl create namespace cattle-system

然后安装 Rancher,并声明你选择的选项。参考下表来替换每个占位符。Rancher 需要配置为使用私有镜像仓库,以便配置所有 Rancher 启动的 Kubernetes 集群或 Rancher 工具。

对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 global.cattle.psp.enabled 设置为 false。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。

占位符 描述
<VERSION> 输出压缩包的版本号。
<RANCHER.YOURDOMAIN.COM> 指向负载均衡器的 DNS 名称。
<REGISTRY.YOURDOMAIN.COM:PORT> 你的私有镜像仓库的 DNS 名称。
<CERTMANAGER_VERSION> 在 K8s 集群上运行的 cert-manager 版本。
helm install rancher ./rancher-<VERSION>.tgz \
    --namespace cattle-system \
    --set hostname=<RANCHER.YOURDOMAIN.COM> \
    --set certmanager.version=<CERTMANAGER_VERSION> \
    --set rancherImage=<REGISTRY.YOURDOMAIN.COM:PORT>/rancher/rancher \
    --set systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT> \ # 设置在 Rancher 中使用的默认私有镜像仓库
    --set useBundledSystemChart=true # 使用打包的 Rancher System Chart

可选 :如需安装特定的 Rancher 版本,设置rancherImageTag 的值,例如:--set rancherImageTag=v2.5.8

   helm install rancher ./rancher-v2.9.3.tgz \
    --namespace cattle-system \
    --set hostname=rancher.demo \
    
**如果是镜像加速上面就足够了


**下面为私有仓库配置
    --set rancherImage=<REGISTRY.YOURDOMAIN.COM:PORT>/rancher/rancher \
    --set systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT> \ # 设置在 Rancher 中使用的默认私有镜像仓库
    --set useBundledSystemChart=true # 使用打包的 Rancher System Chart
    --set certmanager.version=v1.16.3 \

3.查看Cattle-system状态

4.访问Rancher-Ui

**我们如果在私有云,可以在外部部署一个nginx然后代理走4层代理走负载均衡域名的流量,DNS绑定nginx的IP就可以发布在内网访问。

**我们在公有云办法有很多,但因为没有VPN,可以买一个nat网关、可以买一个alb等等,把主机用公网暴露出来,我这里演示的就节约一点,绑定两个弹性IP挂ECS主机,然后修改我远程主机的hosts地址。(节约一点,一天做实验小20呢)

sudo vim /etc/hosts

**这里我配置了两个EIP,为了冗余和负载,但hosts主机上是按顺序负载,即访问匹配到的永远第一条DNS记录。

ping xxxx 你的域名

--set hostname=rancher.demo

**浏览器: https://rancher.demo

手动输入

获取访问凭证

kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{
   
   {.data.bootstrapPassword|base64decode}}{
   
   {"\n"}}'

**输入密码访问即可。

**到这里我们就离线成功部署好了Rancher.

**因为还有第四章Rancher与RKE2的综合容灾实验,所以这里把Rancher-backup通过Rancher安装了。

五、部署Rancher-backup

1、创建Apps-Rancher-backup

​​​​​​​

**需要给Rancher-backup一个存储位置:可以是外部的S3/CS/PV,这里我选择阿里云的OSS存储,实际的私有云一般也会是对象存储。

2、配置阿里云OSS

**先用aliyun的客户端测试一下上传/下载。

mkdir ossutil

curl -o ossutil-2.0.6-beta.01091200-linux-amd64.zip https://gosspublic.alicdn.com/ossutil/v2-beta/2.0.6-beta.01091200/ossutil-2.0.6-beta.01091200-linux-amd64.zip


unzip ossutil-2.0.6-beta.01091200-linux-amd64.zip

cd ossutil-2.0.6-beta.01091200-linux-amd64

chmod 755 ossutil

sudo mv ossutil /usr/local/bin/ && sudo ln -s /usr/local/bin/ossutil /usr/bin/ossutil

**编辑配置文件-/root/.ossutilconfig,放入阿里云的ID以及Secret.访问凭证。

*注意这里的region需要配置为cn-地名,比如cn-shanghai, cn-hangzhou等

验证测试一下:

ossutil ls oss://"你的桶名称"

**测试成功。

3、配置Rancher-backup

1、**配置阿里云对象存储的访问凭证-secret.
必须是:
accessKey,secretKey

2、**配置Rancher-backup存储

**这里的信息和阿里云OSS一样。如果是私有部署的OSS可能涉及到自签名CA证书信任问题,也可以在这里添加,但是阿里云证书是单向认证且CA普遍服务器信任。

4、开始部署安装

 kubectl get po -n cattle-resources-system

**UI会出现Rancher Backups.

5、调度一个备份任务

**点击create-调度一个备份任务

**OSS查看备份文件。


总结

1、这边文件记录了离线部署Rancher的注意事项。

2、以及部署Rancher-backup备份Rancher.

3、下一章我们开始正式的容灾测试。

1、RKE2集群-etcd-Mysql主备倒换。

2、会对现有的Rancher做一些简单的变更,数据添加模拟运行了一段时间的Rancher。

3、异地部署2台同规格的rke2主机,通过OSS将rke2集群需要的文件上传、在异地使用相同的离线镜像方式部署通过OSS拉取文件重新部署RKE2集群,模拟主数据中心故障,异地需要重新拉起RKE2集群的场景。

4、拉起RKE2之后、一样的方式部署Rancher并且Rancher通过Rancher-backup还原。

相关推荐
A ?Charis2 天前
第二章-SUSE- Rancher-容器高可用与容灾测试-RKE2-集群搭建(外置Mysql)-Tarball方法
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