系列文章目录
第一章-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(容灾卷跨集群测试)
文章目录
目录
[思路: 1、搞定镜像-两种方式](#思路: 1、搞定镜像-两种方式)
[1、找一台节点部署私有仓库 (也可以复用其它的节点)](#1、找一台节点部署私有仓库 (也可以复用其它的节点))
[2、 测试推送和拉取](#2、 测试推送和拉取)
[6、获取最新的 cert-manager Helm Chart,并解析模板以获取镜像的详情信息:*你的外网节点需要安装helm.](#6、获取最新的 cert-manager Helm Chart,并解析模板以获取镜像的详情信息:*你的外网节点需要安装helm.)
[7、 对镜像列表进行排序和唯一化,以去除重复的镜像源:](#7、 对镜像列表进行排序和唯一化,以去除重复的镜像源:)
[8. 将镜像保存到你的工作站中](#8. 将镜像保存到你的工作站中)
[三、获取 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)
[2. 安装 Rancher](#2. 安装 Rancher)
总结
前言
第一章我们搭建好了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你的本地节点上。
*在你的外网节点上获取这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. 将镜像保存到你的工作站中
-
为
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:
-
为 cert-manager 创建命名空间:
kubectl create namespace cert-manager
-
创建 cert-manager CustomResourceDefinition (CRD)。
kubectl apply -f cert-manager/cert-manager-crd.yaml
-
安装 cert-manager。
-
*节点上的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还原。