RKE2(Rancher Kubernetes Engine 2)详解
文章目录
- RKE2(Rancher Kubernetes Engine 2)详解
- 核心定位与设计哲学
- 主要特点与架构解析
- 1. 默认安全与合规
- 2. 混合架构与部署模式
- 3. 基于 Containerd 的运行时
- 4. 打包与生命周期管理
- 5. 与 Rancher 生态无缝集成
- RKE2 vs. RKE1 vs. K3s:如何选择?
- 典型部署架构
- 快速入门示例
- 总结:谁应该使用 RKE2?
RKE2,全称为Rancher Kubernetes Engine 2,也被称 为RKE Government,是 Rancher Labs(现为 SUSE 旗下)开发的一个完全遵从标准的 Kubernetes 发行版。它定位为一个安全、合规、高可用的 Kubernetes 发行版,特别注重满足美国政府(如国防部)和企业级生产环境的严格要求。
核心定位与设计哲学
RKE2 的设计目标是弥合RKE1(传统 Docker 环境)和K3s(极端轻量级 IoT/边缘)之间的空白,其核心哲学是:
- 安全与合规优先:默认配置即遵循 CIS Kubernetes 基准强化,使用非特权容器运行时,并全面支持 FIPS 140-2 加密。
- 简单但强大:安装和运维力求简单,同时不牺牲企业级功能和高可用性。
- 开源与云原生:完全开源,并积极融入上游 Kubernetes 和云原生生态。
主要特点与架构解析
1. 默认安全与合规
- CIS 强化:RKE2 默认安装即符合 CIS Kubernetes Benchmark v1.23 的绝大部分要求,无需额外配置。
- FIPS 140-2 就绪:其所有内部组件(kube-apiserver, kubelet, containerd, etcd)均使用经 FIPS 验证的加密模块进行编译,满足政府和企业对加密合规性的要求。
- 无 Root 权限运行:默认以非 root 用户(
rke2用户)运行所有组件,大大降低了潜在的攻击面。 - 默认启用 SELinux/AppArmor:在支持的 Linux 发行版上自动配置。
2. 混合架构与部署模式
- 单一二进制文件:与 K3s 类似,RKE2 通过一个小于 200MB 的二进制文件分发,包含了运行 Kubernetes 所需的所有组件。
- 灵活的部署模式:
- 高可用模式(HA):内置基于
etcd的、经过生产验证的高可用架构。支持奇数个(3,5,7…)Server 节点组成控制平面集群。 - 外部数据存储模式:可以配置使用外部的、托管的数据库(如 Amazon RDS、Google Cloud SQL 或自建的 MySQL/PostgreSQL)来存储集群状态,简化了控制平面的运维。
- 固定注册表地址:支持从 Air-gapped(离线)环境安装,非常适合安全隔离的网络。
- 高可用模式(HA):内置基于
3. 基于 Containerd 的运行时
- 摒弃 Docker:RKE2不再使用 Docker作为容器运行时,而是直接使用containerd。这减少了架构的复杂度,提升了启动速度和资源效率,也更贴近 Kubernetes 上游的发展趋势(从 Dockershim 迁移)。
- 镜像管理:通过
crictl工具进行容器和镜像管理。
4. 打包与生命周期管理
- 系统服务:通过 systemd 服务(
rke2-server或rke2-agent)进行管理,集成度高。 - 自动更新:内置
rke2-upgrade工具,支持平滑的原地升级到新版本,简化了集群的补丁和版本管理。 - 丰富的发行包:提供 RPM、DEB 包,便于通过 YUM/APT 仓库进行安装和管理,符合传统 IT 运维习惯。
5. 与 Rancher 生态无缝集成
- RKE2 是SUSE Rancher 容器管理平台的“一等公民”。通过 Rancher UI,可以轻松地创建、导入、监控和运维 RKE2 集群,实现多集群的统一管理。
RKE2 vs. RKE1 vs. K3s:如何选择?
| 特性 | RKE2 | RKE1 | K3s |
|---|---|---|---|
| 目标环境 | 安全优先的生产环境、政府、金融、混合云 | 传统的、熟悉 Docker 的生产环境 | 资源受限的边缘、IoT、Dev/Test、小型集群 |
| 容器运行时 | Containerd | Docker | Containerd(可换) |
| 数据存储 | 内置etcd或外部 SQL 数据库 | 内置etcd | 内置sqlite3(默认)、etcd或外部数据库 |
| 安全合规 | 默认 CIS 强化、FIPS | 可选 CIS 配置、无原生 FIPS | 可选 CIS 配置、支持 FIPS |
| 二进制大小 | ~150 MB | 依赖 Docker 和多个组件 | ~70 MB(极致轻量) |
| 部署复杂度 | 中等,专注于安全和 HA | 中等,依赖 Docker 环境 | 非常简单 |
| 资源占用 | 中等(比 K3s 高,比多数发行版低) | 较高(因 Docker 层) | 极低 |
| 适用场景 | 合规性要求高的数据中心、核心业务 | 已有 Docker 技术栈的迁移或维护 | 边缘计算、嵌入式、快速原型 |
典型部署架构
一个高可用的 RKE2 集群通常包含:
- Server 节点(3 个或 5 个):运行 Kubernetes 控制平面组件(kube-apiserver, scheduler, controller-manager)和
etcd。提供集群管理端点。 - Agent 节点(若干):运行工作负载。通过 Token 注册到 Server 节点。
- 外部负载均衡器:将流量分发到多个 Server 节点的 API Server 端口(6443),实现控制平面的高可用。
快速入门示例
安装 Server 节点(首个节点):
curl-sfL https://get.rke2.io|sudosh-sudosystemctlenablerke2-server.servicesudosystemctl start rke2-server.service获取 Token 和配置:
sudocat/var/lib/rancher/rke2/server/node-tokensudocat/etc/rancher/rke2/rke2.yaml添加 Agent 节点:
curl-sfL https://get.rke2.io|sudosh-sudomkdir-p /etc/rancher/rke2/# 创建配置文件,指向第一个 Server 节点echo"server: https://<第一个server节点的IP>:9345"|sudotee/etc/rancher/rke2/config.yamlecho"token: <从第一个节点获取的token>"|sudotee-a /etc/rancher/rke2/config.yamlsudosystemctlenablerke2-agent.servicesudosystemctl start rke2-agent.service
总结:谁应该使用 RKE2?
RKE2 是理想的选择,当你的需求是:
- 合规性驱动:需要在 FedRAMP、DoD SRG、PCI-DSS 等监管环境下运行。
- 安全至上:希望开箱即用获得一个经过强化的、安全的 Kubernetes 基础。
- 混合环境:在传统数据中心和云上运行统一、可管理的 Kubernetes 集群。
- Rancher 用户:正在使用或计划使用 SUSE Rancher 作为统一的管理平面。
- 寻求现代化:希望从基于 Docker 的 RKE1 平滑迁移到更云原生(containerd)的架构,同时保留熟悉的运维体验。
简单来说,RKE2 是 Rancher 为满足最严苛的企业和政府生产环境需求而打造的“精工版” Kubernetes,它平衡了安全性、合规性、易用性和强大的功能。