用途
RKE2(Rancher Kubernetes Engine 2,又称 RKE Government)是 Rancher 面向安全与合规场景的 Kubernetes 发行版。它使用单个二进制程序管理 containerd、kubelet、kube-proxy 与控制平面组件,控制平面组件以静态 Pod 形式运行。与通过 Ansible 编排 kubeadm 的 Kubespray 不同,RKE2 是自包含安装器,从容器运行时到 CNI 都在同一套进程中处理。
本技能适用于以下场景:使用 RKE2 部署新的 Kubernetes 集群;配置 RKE2 服务端(控制平面)节点与代理(工作)节点;管理内置 Helm 图表附加组件(Canal、CoreDNS、metrics-server、ingress-nginx);通过 HelmChartConfig 清单定制 CNI 与附加组件行为;构建符合 CIS 加固要求或 FIPS 合规的集群。
资料明确说明不适用于:基于 Kubespray 的部署(应使用 kubespray-deployment)、RKE2 升级与日常运维(应使用 rke2-operations)、RKE2 离线安装(需参阅 RKE2 文档中的 tarball 离线安装方式)。
主要能力与设计
安全优先:默认随附 CIS Kubernetes Benchmark 合规配置,通过 BoringCrypto 提供 FIPS 140-2 验证的加密模块,附带 rke2-selinux RPM 提供 SELinux 策略,RPM 仓库经 GPG 签名,CIS 模式下默认强制受限 Pod 安全标准,并支持 Kubernetes Secret 的静态加密。
与 kubeadm/Kubespray 的主要差异:控制平面节点默认不带污点(工作负载可运行在控制平面上);所有附加组件以内置 Helm 图表管理;容器运行时为内嵌 containerd,由 RKE2 进程管理;CNI 默认为 Canal(Calico 策略 + Flannel 覆盖网络);每个节点使用单个 config.yaml,而非大量 Ansible 变量文件。
架构:服务端节点运行 rke2-server 监督进程,监听 :6443(API)与 :9345(监督/加入);代理节点通过 :9345 加入并接受监督,运行工作负载 Pod。启动顺序为:rke2-server 启动 → containerd 启动 → kubelet 启动并监视静态 Pod 清单目录 → 写入 etcd、kube-apiserver、kube-controller-manager、kube-scheduler 静态 Pod 清单 → 启动控制平面 → 部署内置 Helm 图表 → 监督 API 与 Kubernetes API 可用(约 2 分钟)。
关键文件与路径
- /etc/rancher/rke2/config.yaml:服务端与代理配置
- /etc/rancher/rke2/rke2.yaml:生成的 kubeconfig(仅服务端)
- /var/lib/rancher/rke2/bin/:RKE2 二进制(kubectl、crictl、containerd、ctr、runc)
- /var/lib/rancher/rke2/server/manifests/:静态 Pod 与 HelmChartConfig 清单
- /var/lib/rancher/rke2/server/node-token:代理与额外服务端节点的加入令牌
- /var/lib/rancher/rke2/agent/etc/containerd/:containerd 配置与镜像仓库镜像
- /usr/bin/rke2-uninstall.sh 与 /usr/bin/rke2-agent-uninstall.sh:卸载脚本
安装方式
在线安装示例:
curl -sfL https://get.rke2.io --output install.sh
chmod +x install.sh
INSTALL_RKE2_CHANNEL=v1.33 ./install.sh
或一行安装:
curl -sfL https://get.rke2.io | INSTALL_RKE2_CHANNEL=v1.33 sh -
安装器会安装 rke2-common(核心二进制与 systemd 单元)、rke2-selinux(SELinux 策略模块)与 rke2-server(或工作节点的 rke2-agent)。安装后二进制位于 /var/lib/rancher/rke2/bin/,可按资料示例创建系统级软链接或加入 PATH。
服务端配置与启动
先创建 /etc/rancher/rke2 目录与 config.yaml。最小配置示例为 write-kubeconfig-mode: "0644" 与 cni: canal。完整示例还包含调试开关、网络绑定(bind-address、advertise-address、node-ip)与禁用项(disable-cloud-controller,以及禁用 rke2-ingress-nginx、rke2-coredns-autoscaler、servicelb 等)。CNI 可选 canal(默认)、cilium、calico、none(自带 CNI)。
内置附加组件通过 HelmChartConfig 定制:清单需在首次启动 rke2-server 前放入 /var/lib/rancher/rke2/server/manifests/;若服务端已在运行,则改动会被自动拾取。资料给出三个示例,分别定制 Canal 的 flannel 网卡(多网卡环境下必须指定,否则可能选中 NAT 网卡导致 Pod 网络中断)、CoreDNS autoscaler 参数与 ingress-nginx 控制器配置。
启动与验证:
systemctl enable --now rke2-server.service
journalctl -u rke2-server -f
启动约需 2 分钟。随后复制 /etc/rancher/rke2/rke2.yaml 到 ~/.kube/config 并 chmod 600,用 kubectl get nodes 验证;从远程访问时可替换其中的 127.0.0.1 为服务端地址(资料同时给出 macOS 的 sed 写法)。服务端启动后会自动部署 rke2-canal、rke2-coredns、rke2-metrics-server、rke2-ingress-nginx、rke2-runtimeclasses,可用 helm list -A 查看。
加入代理与额外服务端节点
在服务端读取 /var/lib/rancher/rke2/server/node-token 获取令牌。工作节点以代理类型安装:
curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" INSTALL_RKE2_CHANNEL=v1.33 sh -
代理 config.yaml 需包含 server(指向 https://<服务端IP>:9345,注意是 9345 监督端口而非 6443 API 端口)、token 与 node-ip。然后 systemctl enable --now rke2-agent.service,并在服务端用 kubectl get nodes 确认加入。高可用控制平面则由额外服务端节点以相同 server/token 配置加入。
实验环境与适用限制
资料提供基于 Vagrant + VirtualBox 的两节点实验:Rocky Linux 9.6,k8s-node1(192.168.56.11,服务端,4 CPU/4096 MB)与 k8s-node2(192.168.56.12,代理,4 CPU/4096 MB),每台 VM 含 enp0s3(NAT)与 enp0s8(Host-Only)。给出 vagrant up/ssh/destroy 命令与在两个节点上逐步执行的安装、配置、启动、kubectl 设置、令牌获取流程。
限制:资料未提供收费、价格、平台支持范围等信息,均暂未提供;离线安装、升级与日常运维不在本技能范围内,需参考对应文档或技能。