Rancher2.7.3创建下游集群(RKE2-V1.25.7)的辛酸与泪水

一、环境信息:
RKE2 版本:
Rancher servers版本2.7.3,RKE2版本v1.25.7+rke2r1,准备通过外部终止TLS方式进行部署
harbor私有仓库,已经从官网下载并上传rancher-images.txt(2.7.3和2.7.4)列表的相关镜像至harbor仓库

节点 CPU 架构,操作系统和版本:
1、Rancher server使用的是proxmox虚拟机3台,操作系统Centos7.9,RKE2版本v1.25.7+rke2r1(离线helm部署),Rancher servers版本2.7.3
2、下游集群使用的是物理服务器(公司淘汰的服务器,大多是2020年以前),3台,操作系统Centos7.9

集群配置:
1、Rancher Server使用的3台虚拟机自成集群,只供Rancher使用
2、下游集群,物理服务器3台,准备在Rancher servers直接创建v1.25.7+rke2r1集群

二、问题描述:
1、v1.25.7+rke2r1在proxmox虚拟机部署安装,无论是第1台server还是集群配置,均没有问题
2、v1.25.7+rke2r1在物理机服务器复制Rancher server创建的下游集群

三、重现步骤:

  • 安装 RKE2 的命令:
    1、Rancher Server需求的RKE2集群安装
    1)安装文件,均从GitHub下载
    install.sh
    rke2-images.linux-amd64.tar.zst
    rke2.linux-amd64.tar.gz
    sha256sum-amd64.txt
    2)安装命令
    INSTALL_RKE2_TYPE=“server” INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_ARTIFACT_PATH=/data/rke2-artifacts sh install.sh
    3)第一个Server节点安装
    rke2-server.service服务正常启动,然后创建集群配置文件,加入集群
    mkdir -p /etc/rancher/rke2
    vim /etc/rancher/rke2/config.yaml
    server: https://rancherplatform1:9345
    token: K106a9d92a46d38766b847e2f64c96b3d7738dec9feb6e0ce0e43a322f4af073e49::server:2992f64c92a46d38766ce63767bdbea5
    tls-san:
    • 10.3.163.231
    • 10.3.157.99
    • virtual_loadblance_server

node-name: xxh_testplatform1
node-label:

  • “role=master”
    4)第2和第3个server节点同样安装,集群启动成功,通信正常。
    2、Rancher server 安装
    1)获取Rancher的Chart文件,输出rancher-2.7.3.tgz文件
    helm fetch rancher-stable/rancher --version=v2.7.3
    2)传入到内部网络在虚拟机上
    3)添加TLS密文(公司申请的私有证书)
    添加密文:kubectl -n cattle-system create secret tls tls-rancher-ingress
    –cert=tls.crt
    –key=tls.key
    使用私有CA签名证书:kubectl -n cattle-system create secret generic tls-ca
    –from-file=cacerts.pem=./cacerts.pem
    4)安装Rancher
    helm install rancher ./rancher-2.7.3.tgz \ #互联网Helm渲染生成的压缩包文件
    –namespace cattle-system
    –set hostname=<RANCHER.YOURDOMAIN.COM>
    –set rancherImage=REGISTRY.YOURDOMAIN.COM:PORT/rancher/rancher
    –set systemDefaultRegistry=REGISTRY.YOURDOMAIN.COM:PORT \ #设置在Rancher中使用的默认私有镜像仓库
    –set useBundledSystemChart=true \ #使用打包的Rancher System Chart
    –set tls=external \ #将负载均衡器指向所有Rancher集群节点上的端口HTTP 80
    –set ingress.tls.source=secret
    –set privateCA=true #可选
    4)外部Nginx代理,使用官网推荐的nginx.config配置,访问Rancher WEB页面正常。

3、创建下游集群
1、根据页面的注册url在物理服务器(安装Centos7.9操作系统)上进行注册,结果失败。报错如下:


2、尝试在虚拟机上进行注册,仍然失败。
3、换一种方式,不进行注册下发,通过集群导入。但最让人头痛的事情是在物理服务器上直接部署RK2-v1.25.7+rke2r1集群,第1台server直接启动失败,让我崩溃了。
4、尝试虚拟机直接部署RK2-v1.25.7+rke2r1集群,然后在Rancher UI上直接导入,仍然失败。

预期结果:
1、RK2-v1.25.7+rke2r1集群+Rancher2.7.3高可用运行正常;
2、创建下游集群RK2-v1.25.7+rke2r1,集群正常下发注册,并运行业务应用

实际结果:
1、RK2-v1.25.7+rke2r1集群+Rancher2.7.3高可用运行正常;
2、创建下游集群RK2-v1.25.7+rke2r1,虚拟机和物理服务器均下发失败;
3、部署集群时,物理服务器也未成功,更不用谈导入集群测试。

最后想要说明,本怀揣着极大热情要把Rancher使用起来,以学习成本较低使用方便的优势在公司进行推广,建议相关业务放弃直接使用K8S的想法,但是从小白起家经过3个月的官网零散拼凑学习、部署摸索,直至现在弹尽粮绝难以支撑,如果我的部署过程对大家有帮助请借鉴,也请大家提出宝贵的意见指导我进一步走下去!

搭建 rancher 的时候,你已经在 ingress 里创建了对应的证书,就不需要使用 external 这个参数了。

另外,你在 rancher 上创建下游集群,下游 RKE2 集群的镜像默认是从公网地址去拉取。如果你要使用离线安装,需要在创建集群的时候执行 私有镜像仓库的地址才行。

最后,你已经成功了离线安装了 rancher 的 local 集群 rke2,那在下游集群上采用同样的方法去安装 rke2 集群,然后在导入到 rancher 中 也可以。

另外,关于一些 rke2 的常用命令,可以用来拍错,参考:RKE2 commands

1、私有仓库已经创建,且按照rancher-images.txt下载好导入到私有仓库,就是不知道是否还缺少哪些镜像;
2、最初目标是SSL通过外部Nginx代理和管理证书,Rancher和下游集群都不安装任何证书。
3、我现在不太明白的是ingress到底要不要创建证书,之前安装Rancher的时候没有创建证书,创建下游集群一直是失败的。目前没有具体的可行性指导来解决问题。
4、下游集群导入我也试了,Rancher集群上一直在pending,就是起不来,下游集群rke2-server服务直接起不来了,一头包 :sweat_smile:

你有没有看我上面的回复

回复自然看了,我之前的理解是ingress如果不创建证书,安装Rancher的时候通过–set tls=external外部终止SSL,然后外部Nginx导入证书代理Rancher UI即可。
ingress是否必须安装默认或者自有证书?

另:私有仓库在Rancher UI创建下游集群的时候已经指定的

是的,理解没错

不是


之前没有安装ingress证书,使用–set tls=external外部终止TLS,外部Nginx 公司购买的SSL证书代理Rancher,然后创建注册下游集群时像这种报错,第一思路应该是证书错误的,所以后来我就安装了证书,难道是排查思路错误了?

你可以在浏览器地址栏左侧的 锁头 按钮来确认证书是否设置成功,比如:
image

我试了很多种方法,不论ingress是否安装私有证书,Rancher server基本都是安装成功的,可以在web浏览器正常访问。但就是创建下发或导入下游集群始终没有实现,我也搞不清楚是因为Rancher server安装问题,还是下游集群创建时私有仓库真的缺少相关的镜像。

你到是按照上面的方法确认下证书啊,东一句西一句的,好累

Rancher server的web访问页面证书没问题的,无论ingress是否安装证书都可以正常访问,也就是RKE2+Rancher高可用本身没问题。

创建下游集群的时候一直是失败的,所以现在比较迷茫哪里配置出了问题。
在此非常感谢KSD楼主的耐心指导!

上面 rancher-system-agent 日志中报的 x509 的日志,我怀疑是创建证书导致的。

意思就是:该证书仅对 ingress.local 有效。当尝试使用 xxhrancher.xxx.com 时,这是无效的。

你需要确认你使用的证书的 CN 的值是否是 xxhrancher.xxx.com

好的,我再把几种情况测试下,同时针对具体的报错排查,多谢!