一、前言
作为K8S的新手小白,从docker转移阵地过来,直接上手学习Rancher2.x和RKE2,且是比较麻烦的离线安装,架构也较为复杂,经过几个月的摸索试验,基本算是“头破血流”,最终完成了第一步部署的工作。翻阅官方文档和百度文章以及论坛前辈的指导,总结出了些许自认为对初学者(大神请自动略过 )有用的Rancher的部署经验,供大家参考。
二、背景
1、拓扑架构
keepalived+Nginx(4层负载)+RKE2 Server(3server节点)
主机信息如下:
2、Rancher Server 设置
- Rancher 版本:2.7.5
- 安装选项: Helm Chart
- RKE2版本:v1.26.5+rke2r1 (GitHub有Rancher和RKE2版本对应关系)
- 在线或离线部署:离线部署
3、部署前准备
1)主机环境如系统参数、防火墙、内核版本等,可自行根据实际情况并参照官方文档进行设置,此处略过。
2)keepalived+Nginx(4层负载)提前准备好,要注意的是Nginx要支持stream模块,自行编译,此处略过。
3)私有镜像仓库,我是用的是harbor,基本也是一键部署,从GitHub下载即可。
4)RKE2离线部署包,供4个文件,GitHub下载就不多说,可以向身边的开发讨教:
- install.sh #安装使用的脚本文件
- rke2-images.linux-amd64.tar.zst #需要的image文件包
- rke2.linux-amd64.tar.gz #rke2二进制文件
- sha256sum-amd64.txt #文件校验
5)DNS解析:server节点注册使用的https地址需要提前配置DNS解析,推荐外部DNS服务解析virtual_loadblance_server 172.16.0.100
三、RKE2部署
1、固定的server注册地址
- 使用第1个server节点IP地址作为固定注册地址,最简单但不可靠;
- 使用外部固定的端点作为注册地址,有3种途径:
-4层(TCP)负载均衡器;
-轮询DNS;
-虚拟或弹性IP地址。
Nginx配置4层(TCP)负载均衡器steam模块部分(非标准):
upstream virtual_loadblance_server {
server 172.16.0.101:9345 weight=2 max_fails=3 fail_timeout=10s;
#server 172.16.0.102:9345 weight=2 max_fails=3 fail_timeout=10s;
#server 172.16.0.103:9345 weight=2 max_fails=3 fail_timeout=10s;
}
server {
listen 9345;
proxy_connect_timeout 3s;
proxy_timeout 10s;
proxy_pass virtual_loadblance_server;
}
注:注册server节点时,可以先把102和103注释,待集群所有节点注册完成后取消注释。
2、server01(第一个server节点)节点安装
#主机创建目录上传4个文件
mkdir /data/rke2-artifacts && cd /data/rke2-artifacts
#然后上传文件
install.sh
rke2-images.linux-amd64.tar.zst
rke2.linux-amd64.tar.gz
sha256sum-amd64.txt
#复制压缩包至镜像目录
mkdir -p /var/lib/rancher/rke2/agent/images && cd /data/rke2-artifacts
cp rke2-images.linux-amd64.tar.zst /var/lib/rancher/rke2/agent/images
#执行安装脚本
cd /data/rke2-artifacts
INSTALL_RKE2_TYPE="server" INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_ARTIFACT_PATH=/data/rke2-artifacts sh install.sh
#修改集群配置文件
vim /etc/rancher/rke2/config.yaml
# 以下为配置文件内容
token: k8s-rke2-secret
tls-san:
- virtual_loadblance_server
- 172.16.0.100
node-name: k8s-rke2-server01
node-label:
- "role=master"
3、server01(第1节点)启动
# 启动节点
# 第一次启动可能会比较慢,因为要初始化、生成各种文件
systemctl enable rke2-server
systemctl start rke2-server
#若启动报错,则重启服务
systemctl restart rke2-server
#查看启动日志
journalctl -u rke2-server.service -f
#查看服务状态
systemctl status rke2-server
4、集群添加第2个Server节点
#修改集群配置文件
mkdir -p /etc/rancher/rke2
vim /etc/rancher/rke2/config.yaml
# 以下为配置文件内容
server: https://virtual_loadblance_server:9345
token: k8s-rke2-secret
tls-san:
- virtual_loadblance_server
- 172.16.0.100
node-name: k8s-rke2-server02
node-label:
- "role=master"
第2个server节点安装启动同server01步骤。
5、集群添加第3个Server节点
#修改集群配置文件
mkdir -p /etc/rancher/rke2
vim /etc/rancher/rke2/config.yaml
# 以下为配置文件内容
server: https://virtual_loadblance_server:9345
token: k8s-rke2-secret
tls-san:
- 172.16.0.100
- virtual_loadblance_server
node-name: k8s-rke2-server03
node-label:
- "role=master"
第2个server节点安装启动同server01步骤。
6、集群添加Agent节点(可选)
#修改集群配置文件
mkdir -p /etc/rancher/rke2
vim /etc/rancher/rke2/config.yaml
# 以下为配置文件内容
server: https://virtual_loadblance_server:9345
token: k8s-rke2-secret
tls-san:
- 172.16.0.100
- virtual_loadblance_server
node-name: k8s-rke2-agent01
node-label:
- "role=agent"
agent节点安装启动不同的地方是安装脚本INSTALL_RKE2_TYPE=“agent”,以及启动命令systemctl start rke2-agent。
至此Rancher使用的高可用RKE2集群部署完毕,下一步可以开心的部署Rancher Server。
如有不足或错误的地方,请大家不吝指正!