一、环境规划
| 角色 |
IP |
说明 |
| RKE2 Server (Master) |
192.168.122.10 |
控制平面 + etcd |
| RKE2 Server (Master) |
192.168.122.11 |
控制平面 + etcd |
| RKE2 Server (Master) |
192.168.122.12 |
控制平面 + etcd |
| RKE2 Agent (Worker) |
192.168.122.13 |
工作节点 |
| RKE2 Agent (Worker) |
192.168.122.14 |
工作节点 |
| Rancher (Docker) |
192.168.122.15 |
单节点 Docker 部署 Rancher |
二、所有节点(1-5 号)通用准备
在 192.168.122.10 ~ 192.168.122.14 上依次执行:
2.1 系统基础配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| sudo apt update && sudo apt upgrade -y
sudo apt install -y curl vim net-tools telnet chrony
sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo modprobe overlay sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/modules-load.d/rke2.conf overlay br_netfilter EOF
cat <<EOF | sudo tee /etc/sysctl.d/99-rke2.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 net.ipv4.conf.all.forwarding = 1 EOF
sudo sysctl --system
sudo hostnamectl set-hostname rke2-master01
sudo hostnamectl set-hostname rke2-master02
sudo hostnamectl set-hostname rke2-master03
sudo hostnamectl set-hostname rke2-worker01
sudo hostnamectl set-hostname rke2-worker02
cat <<EOF | sudo tee -a /etc/hosts 192.168.122.10 rke2-master01 192.168.122.11 rke2-master02 192.168.122.12 rke2-master03 192.168.122.13 rke2-worker01 192.168.122.14 rke2-worker02 192.168.122.15 rancher-server EOF
|
2.2 防火墙配置(UFW)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| sudo apt install -y ufw
sudo ufw allow 22/tcp
sudo ufw allow from 192.168.122.0/24 to any port 6443 proto tcp
sudo ufw allow from 192.168.122.0/24 to any port 9345 proto tcp
sudo ufw allow from 192.168.122.0/24 to any port 2379:2381 proto tcp
sudo ufw allow from 192.168.122.0/24 to any port 10250 proto tcp
sudo ufw allow from 192.168.122.0/24 to any port 8472 proto udp
sudo ufw allow from 192.168.122.0/24 to any port 9099 proto tcp
sudo ufw allow from 192.168.122.0/24 to any port 30000:32767 proto tcp
sudo ufw --force enable
|
2.3 NetworkManager 配置(重要)
RKE2 与 NetworkManager 存在已知冲突,需要配置忽略 CNI 接口 :
1 2 3 4 5 6 7 8
| sudo mkdir -p /etc/NetworkManager/conf.d/
cat <<EOF | sudo tee /etc/NetworkManager/conf.d/rke2-canal.conf [keyfile] unmanaged-devices=interface-name:flannel*;interface-name:cali*;interface-name:tunl*;interface-name:vxlan.calico;interface-name:vxlan-v6.calico;interface-name:wireguard.cali;interface-name:wg-v6.cali EOF
sudo systemctl reload NetworkManager
|
2.4 配置镜像加速(registries.yaml)
您提供的 registries.yaml 配置,在 所有 5 台 K8s 节点 上执行:
1 2 3 4 5 6 7 8 9 10
| sudo mkdir -p /etc/rancher/rke2
sudo tee /etc/rancher/rke2/registries.yaml > /dev/null << 'EOF' mirrors: docker.io: endpoint: - "https://docker.m.daocloud.io" - "https://docker.unsee.tech" - "https://docker.1ms.run" EOF
|
三、部署 RKE2 Server 节点(Master)
3.1 第一个 Master 节点(192.168.122.10)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| sudo mkdir -p /etc/rancher/rke2
sudo tee /etc/rancher/rke2/config.yaml > /dev/null << 'EOF' token: my-rke2-cluster-token-2026 node-name: rke2-master01 tls-san: - 192.168.122.10 - 192.168.122.11 - 192.168.122.12 - rke2-master01 - rke2-master02 - rke2-master03 cluster-cidr: 10.42.0.0/16 service-cidr: 10.43.0.0/16 cluster-dns: 10.43.0.10 write-kubeconfig-mode: "0644" kube-proxy-arg: - "--proxy-mode=ipvs" - "--ipvs-strict-arp=true" EOF
curl -sfL https://get.rke2.io | sudo sh -
sudo systemctl enable rke2-server.service sudo systemctl start rke2-server.service
sudo journalctl -u rke2-server -f
|
等待日志显示集群初始化完成(约 2-5 分钟),然后执行:
1 2 3 4 5 6 7 8 9 10
| echo 'export PATH=$PATH:/var/lib/rancher/rke2/bin' >> ~/.bashrc echo 'export KUBECONFIG=/etc/rancher/rke2/rke2.yaml' >> ~/.bashrc source ~/.bashrc
kubectl get nodes
sudo cat /var/lib/rancher/rke2/server/token
|
3.2 第二个 Master 节点(192.168.122.11)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| sudo mkdir -p /etc/rancher/rke2
sudo tee /etc/rancher/rke2/config.yaml > /dev/null << 'EOF' server: https://192.168.122.10:9345 token: my-rke2-cluster-token-2026 node-name: rke2-master02 tls-san: - 192.168.122.10 - 192.168.122.11 - 192.168.122.12 - rke2-master01 - rke2-master02 - rke2-master03 cluster-cidr: 10.42.0.0/16 service-cidr: 10.43.0.0/16 cluster-dns: 10.43.0.10 write-kubeconfig-mode: "0644" kube-proxy-arg: - "--proxy-mode=ipvs" - "--ipvs-strict-arp=true" EOF
curl -sfL https://get.rke2.io | sudo sh -
sudo systemctl enable rke2-server.service sudo systemctl start rke2-server.service
echo 'export PATH=$PATH:/var/lib/rancher/rke2/bin' >> ~/.bashrc echo 'export KUBECONFIG=/etc/rancher/rke2/rke2.yaml' >> ~/.bashrc source ~/.bashrc
|
3.3 第三个 Master 节点(192.168.122.12)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| sudo mkdir -p /etc/rancher/rke2
sudo tee /etc/rancher/rke2/config.yaml > /dev/null << 'EOF' server: https://192.168.122.10:9345 token: my-rke2-cluster-token-2026 node-name: rke2-master03 tls-san: - 192.168.122.10 - 192.168.122.11 - 192.168.122.12 - rke2-master01 - rke2-master02 - rke2-master03 cluster-cidr: 10.42.0.0/16 service-cidr: 10.43.0.0/16 cluster-dns: 10.43.0.10 write-kubeconfig-mode: "0644" kube-proxy-arg: - "--proxy-mode=ipvs" - "--ipvs-strict-arp=true" EOF
curl -sfL https://get.rke2.io | sudo sh -
sudo systemctl enable rke2-server.service sudo systemctl start rke2-server.service
echo 'export PATH=$PATH:/var/lib/rancher/rke2/bin' >> ~/.bashrc echo 'export KUBECONFIG=/etc/rancher/rke2/rke2.yaml' >> ~/.bashrc source ~/.bashrc
|
四、部署 RKE2 Agent 节点(Worker)
4.1 Worker 节点 1(192.168.122.13)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| sudo mkdir -p /etc/rancher/rke2
sudo tee /etc/rancher/rke2/config.yaml > /dev/null << 'EOF' server: https://192.168.122.10:9345 token: my-rke2-cluster-token-2026 node-name: rke2-worker01 kube-proxy-arg: - "--proxy-mode=ipvs" - "--ipvs-strict-arp=true" EOF
curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sudo sh -
sudo systemctl enable rke2-agent.service sudo systemctl start rke2-agent.service
sudo journalctl -u rke2-agent -f
|
4.2 Worker 节点 2(192.168.122.14)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| sudo mkdir -p /etc/rancher/rke2
sudo tee /etc/rancher/rke2/config.yaml > /dev/null << 'EOF' server: https://192.168.122.10:9345 token: my-rke2-cluster-token-2026 node-name: rke2-worker02 kube-proxy-arg: - "--proxy-mode=ipvs" - "--ipvs-strict-arp=true" EOF
curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sudo sh -
sudo systemctl enable rke2-agent.service sudo systemctl start rke2-agent.service
|
五、验证 K8s 集群状态
在任意 Master 节点上执行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| kubectl get nodes -o wide
kubectl get pods -A
kubectl cluster-info
kubectl -n kube-system exec -it etcd-rke2-master01 -- etcdctl \ --cacert=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt \ --cert=/var/lib/rancher/rke2/server/tls/etcd/server-client.crt \ --key=/var/lib/rancher/rke2/server/tls/etcd/server-client.key \ member list
|
预期输出应包含 3 个 control-plane,etcd,master 角色的节点和 2 个 <none> 角色的 Worker 节点,全部状态为 Ready 。
六、部署 Rancher(Docker 单节点)
在 192.168.122.15 上执行:
6.1 安装 Docker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| apt-get update apt-get install -y ca-certificates curl gnupg lsb-release
install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable docker systemctl start docker
|
6.2 配置 Docker 镜像加速(可选,推荐)
1 2 3 4 5 6 7 8 9 10 11
| cat > /etc/docker/daemon.json << EOF { "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me", "https://hub.rat.dev" ] } EOF
systemctl restart docker
|
6.3 运行 Rancher 容器
1 2 3 4 5 6 7 8
| docker run -d \ --restart=unless-stopped \ --name rancher \ -p 80:80 \ -p 443:443 \ --privileged \ -v /var/lib/rancher:/var/lib/rancher \ rancher/rancher:v2.8.5
|
6.4 获取初始密码并登录
1 2
| docker logs rancher 2>&1 | grep "Bootstrap Password"
|
打开浏览器访问 https://192.168.122.15,输入上述密码,然后:
- 设置新的 admin 密码
- 配置 Server URL 为
https://192.168.122.15(或您规划的域名)
- 同意条款进入 Dashboard
七、在 Rancher UI 中手动添加 RKE2 集群
7.1 导入已有集群
- 登录 Rancher UI
- 点击左上角 ☰ → Cluster Management
- 点击 Import Existing(导入已有集群)
- 选择 Generic(通用 Kubernetes 集群)
- 输入集群名称,例如
rke2-prod
- 点击 Create
7.2 在 Master 节点上执行 Rancher 生成的命令
Rancher 会生成一个 kubectl apply 命令,类似:
1
| kubectl apply -f https://192.168.122.15/v3/import/xxxxxxxx.yaml
|
在任意 RKE2 Master 节点上执行该命令(确保 kubectl 和 KUBECONFIG 已配置):
1 2
| export KUBECONFIG=/etc/rancher/rke2/rke2.yaml kubectl apply -f https://192.168.122.15/v3/import/xxxxxxxx.yaml
|
7.3 验证导入
等待几分钟后,在 Rancher UI 中查看集群状态,应显示为 Active。
八、关键配置文件汇总
8.1 registries.yaml(所有 K8s 节点)
1 2 3 4 5 6
| mirrors: docker.io: endpoint: - "https://docker.m.daocloud.io" - "https://docker.unsee.tech" - "https://docker.1ms.run"
|
8.2 Master 01 config.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13
| token: my-rke2-cluster-token-2026 node-name: rke2-master01 tls-san: - 192.168.122.10 - 192.168.122.11 - 192.168.122.12 cluster-cidr: 10.42.0.0/16 service-cidr: 10.43.0.0/16 cluster-dns: 10.43.0.10 write-kubeconfig-mode: "0644" kube-proxy-arg: - "--proxy-mode=ipvs" - "--ipvs-strict-arp=true"
|
8.3 Worker config.yaml
1 2 3 4 5 6
| server: https://192.168.122.10:9345 token: my-rke2-cluster-token-2026 node-name: rke2-worker01 kube-proxy-arg: - "--proxy-mode=ipvs" - "--ipvs-strict-arp=true"
|
九、常见问题排查
| 问题 |
排查命令 |
| RKE2 无法启动 |
sudo journalctl -u rke2-server -f 或 sudo journalctl -u rke2-agent -f |
| 节点无法加入 |
检查 9345 端口连通性、token 是否一致 |
| 镜像拉取失败 |
检查 registries.yaml 配置,重启服务 |
| kubectl 无法连接 |
确认 KUBECONFIG=/etc/rancher/rke2/rke2.yaml |
| CNI 网络异常 |
检查 br_netfilter 模块、防火墙 8472/udp |
| Rancher 无法访问 |
检查 Docker 容器状态、ufw 是否放行 80/443 |
十、参考文档
- RKE2 官方快速入门
- RKE2 配置选项参考
- RKE2 镜像仓库配置
- Rancher Docker 单节点安装
- RKE2 已知问题与限制