RKE(Rancher Kubernetes Engine) 是什么?

RKE(Rancher Kubernetes Engine) 是什么?

核心定义

RKE 是一个 轻量级、高可用、100% 开源Kubernetes 发行版和安装工具 。它的全称是 Rancher Kubernetes Engine(在 RKE2 出现后,原 RKE 有时也被称为 RKE1)。

它的核心目标是用一种 简单、快速、可重复 的方式,在 裸金属服务器、虚拟机、公有云或私有云实例 上部署和管理生产级的 Kubernetes 集群。


核心特性与设计理念

  1. 极简与声明式

    • 整个集群的配置(包括所有组件版本、网络插件、插件配置等)都定义在 一个单一的 YAML 配置文件 (通常是 cluster.yml)中。
    • 通过一条命令 rke up,工具会根据这个文件自动完成所有节点的配置和集群的引导。修改配置后,再次运行 rke up 即可完成集群的升级或变更。这使得集群部署和版本控制变得非常容易。
  2. 无侵入性

    • RKE 本身不依赖 Docker。它在目标节点上通过 容器化 的方式运行所有 Kubernetes 组件(如 kube-apiserver, kube-controller-manager, kube-scheduler, etcd 等)。这意味着你只需要在节点上安装一个容器运行时(如 Docker, containerd),RKE 会处理好一切。
    • 它不会对主机操作系统做大量修改,保持了主机的"清洁"。
  3. 高可用内置

    • RKE 原生支持部署 高可用(HA) 的控制平面(Control Plane)和 etcd 集群。
    • 你可以轻松地在配置文件中指定多个控制平面节点和 etcd 节点。RKE 会自动配置负载均衡器(你需要前置配置负载均衡器,如 HAProxy、Nginx 或云负载均衡器)和节点间的证书,构建出高可用的集群架构。
  4. 灵活性

    • 运行时支持 :早期主要支持 Docker,现在也完全支持 containerd 作为容器运行时。
    • 网络插件 :支持多种 CNI 网络插件,如 FlannelCalicoCanal (Calico + Flannel)、Weave 等,可以在配置文件中轻松指定。
    • Ingress 控制器 :默认集成并自动部署 Nginx Ingress Controller
    • 存储插件:支持配置多种 CSI 驱动或云提供商存储。

工作原理与部署流程

  1. 准备节点

    • 准备若干台 Linux 主机(推荐 Ubuntu, CentOS, RHEL 等)。
    • 在每个节点上安装支持的容器运行时(如 Docker 或 containerd)。
    • 确保节点间 SSH 互通(RKE 通过 SSH 连接到各个节点执行命令)。
    • 创建一个具有 sudo 权限或 root 的 SSH 密钥,并将公钥分发到所有节点。
  2. 编写集群配置文件 (cluster.yml)

    • 这是最关键的步骤。文件内容示例结构如下:

      yaml 复制代码
      nodes:
        - address: 192.168.1.10
          user: ubuntu
          role: [controlplane, worker, etcd] # 单节点角色
          ssh_key_path: ~/.ssh/id_rsa
        - address: 192.168.1.11
          user: ubuntu
          role: [controlplane, etcd] # 控制平面+etcd节点
        - address: 192.168.1.12
          user: ubuntu
          role: [worker] # 纯工作节点
      services:
        etcd:
          snapshot: true
          creation: 6h
          retention: 24h
        kube-api:
          service_cluster_ip_range: 10.43.0.0/16
        kube-controller:
          cluster_cidr: 10.42.0.0/16
          service_cluster_ip_range: 10.43.0.0/16
        kubelet:
          cluster_domain: cluster.local
      network:
        plugin: canal # 指定网络插件
        options:
          flannel_backend_type: "vxlan"
      ingress:
        provider: nginx
        node_selector:
          app: ingress
      addons: | # 可以定义集群部署后立即安装的 Kubernetes 清单(如 Dashboard, 监控等)
        ---
        apiVersion: v1
        kind: Namespace
        metadata:
          name: my-addons
  3. 部署集群

    • 在拥有配置文件和 RKE CLI 的机器上,执行:

      bash 复制代码
      rke up --config cluster.yml
    • RKE 会依次执行以下操作:

      • 通过 SSH 连接到所有节点。
      • 拉取所需的 Kubernetes 组件镜像。
      • 在容器中启动 etcd 集群。
      • 在容器中启动控制平面组件(API Server, Controller Manager, Scheduler)。
      • 部署配置的网络插件、DNS(CoreDNS)、Ingress Controller 等插件。
      • 生成一个 kube_config_cluster.yml 文件,这是集群的 kubeconfig ,用于使用 kubectl 管理集群。
  4. 管理集群

    • 使用 kubectl(通过上一步生成的 kubeconfig)与集群交互。
    • 升级集群:修改 cluster.yml 中的 Kubernetes 版本,再次运行 rke up
    • 备份/恢复 etcd:RKE 提供了 rke etcd snapshot-saverke etcd snapshot-restore 命令,是灾难恢复的关键。
    • 销毁集群:运行 rke remove --config cluster.yml(⚠️ 危险操作)。

优点

  • 快速部署:简化了复杂的手动或脚本化部署过程。
  • 基础设施即代码:集群状态完全由配置文件定义,易于版本控制和复制。
  • 生产就绪:内置的高可用、备份恢复机制,使其适合生产环境。
  • 社区与生态:作为 Rancher 生态系统的一部分,有强大的社区支持和丰富的文档。
  • 纯开源:没有厂商锁定,可以独立于 Rancher Manager 使用。

缺点与注意事项

  • 学习曲线:需要理解 YAML 配置和 Kubernetes 核心概念。
  • 节点要求:对节点 SSH 和权限有要求,在某些严格的安全策略下可能需要调整。
  • 集群生命周期管理:虽然部署和升级简单,但节点操作系统、内核、容器运行时的维护仍需自行负责。
  • 与 RKE2 的区分 :需要理解 RKE 和 RKE2(下一代)的区别(见下文)。

RKE 与 RKE2、K3s 的关系

这是 Rancher 提供的三大 Kubernetes 发行版,定位不同:

特性 RKE (RKE1) RKE2 K3s
定位 传统、稳定的生产集群 安全、合规的边缘与数据中心 极轻量的边缘与 IoT
核心特点 通过容器运行 K8s 组件 打包为系统守护进程,默认使用 containerd 单个二进制文件,极度轻量
安全 传统安全模型 重点强化:默认开启 SELinux,PSP, CIS 基准扫描 轻量级,安全配置较简单
发布节奏 维护模式,更新较少 与上游 K8s 版本紧密同步 快速迭代,功能前沿
适用场景 已有 RKE1 集群,或依赖特定旧版本 新生产部署,尤其是对安全合规要求高的政府、金融领域 资源受限的边缘计算、开发测试、IoT

简单总结

  • 新项目,尤其是对安全有高要求,建议从 RKE2 开始评估。
  • 如果追求极致轻量和简单,资源环境有限,选 K3s
  • RKE 目前主要用于维护已有的 RKE1 集群。

总结

RKE 是一个强大且成熟的 Kubernetes 安装器 ,它通过 声明式配置全容器化部署 的理念,将复杂的 K8s 集群部署流程标准化、自动化。它是构建生产级、高可用 Kubernetes 基础设施的优秀工具,尤其适合在自有基础设施上快速搭建和管理集群。随着 RKE2 的成熟,对于新项目,建议同时评估 RKE2,以获取更强的安全特性和更紧密的上游同步。

相关推荐
BLUcoding2 小时前
使用 Docker Compose 安装常用中间件
docker·中间件·容器
麦兜*2 小时前
深入剖析云原生Service Mesh数据平面Envoy核心架构:基于xDS协议与WebAssembly实现动态流量管理与安全策略的微服务治理实战指南
云原生·架构·service_mesh
牛奶咖啡132 小时前
Prometheus+Grafana构建云原生分布式监控系统(十五)_Prometheus中PromQL使用(二)
云原生·prometheus·集合运算·对查询结果排序·直方图原理·统计掉线的实例·检查节点或指标是否存在
小义_3 小时前
【Docker】知识一
linux·docker·云原生·容器
龙飞053 小时前
Kubernetes 排障实战:PVC 一直 Pending 的原因与解决方案
运维·学习·云原生·容器·kubernetes
岁岁种桃花儿3 小时前
流量入口Nginx动态发现K8s Ingress Controller实操指南
nginx·架构·kubernetes
礼拜天没时间.3 小时前
Docker基础操作——镜像与容器管理
linux·运维·服务器·docker·容器·centos
冗量3 小时前
Kubernetes (K8s) 基础知识、部署与运维指南
运维·容器·kubernetes
没有bug.的程序员4 小时前
Spring Boot 与 Swagger:API 文档自动化生成、版本管理与云原生协作深度实战指南
spring boot·云原生·自动化·api·swagger·版本管理·自动化生产