一、RKE 的核心优势
- 简单高效
- 无需预装复杂依赖,仅需 SSH 访问权限和 Docker 环境即可部署集群。
- 基于 YAML 文件定义集群拓扑,支持版本控制与自动化部署。
- 高可用性
- 内置 Etcd、Control Plane 节点的高可用配置,支持多 Master 节点部署。
- 灵活可控
- 允许自定义 Kubernetes 组件(如 kube-apiserver、kubelet)的启动参数。
- 支持离线部署(Air Gap),适用于内网或受限环境。
- 生态兼容
- 与 Rancher 管理平台无缝集成,提供集群监控、备份恢复等扩展功能。
二、RKE 的工作原理
1. 架构概述
RKE 通过以下步骤部署 Kubernetes 集群:
- 节点准备:在目标主机上安装 Docker,配置 SSH 免密访问。
- 组件容器化:所有 Kubernetes 组件(如 etcd、kube-apiserver)以 Docker 容器形式运行。
- 声明式配置:根据
cluster.yml文件定义节点角色(Control Plane、Worker、Etcd)及网络插件(如 Flannel、Calico)。 - 集群初始化:自动生成证书、配置网络、启动核心服务,最终输出
kubeconfig文件供用户访问集群。
2. 高可用实现
- Etcd 集群:RKE 部署 3 个或更多 Etcd 节点,确保数据一致性。
- Control Plane 负载均衡:通过外部负载均衡器(如 HAProxy)或内置
nginx-proxy容器代理多个 Master 节点的 API Server。
三、RKE 部署 Kubernetes 集群步骤
1. 环境准备
- 节点要求:
- 所有节点安装 Docker(推荐 20.10+)。
- SSH 密钥对配置(RKE 通过 SSH 连接节点执行操作)。
- 开放端口:TCP 6443(Kubernetes API)、2379-2380(Etcd)、8472(Flannel VXLAN)等。
- 示例节点规划:
主机 IP 角色 192.168.1.10 controlplane, etcd 192.168.1.11 controlplane, etcd 192.168.1.12 worker
2. 安装 RKE 命令行工具
# Linux
wget https://github.com/rancher/rke/releases/download/v1.4.8/rke_linux-amd64
chmod +x rke_linux-amd64
sudo mv rke_linux-amd64 /usr/local/bin/rke
# 验证安装
rke --version
3. 编写集群配置文件 cluster.yml
nodes:
- address: 192.168.1.10
user: ubuntu
role: [controlplane, etcd]
ssh_key_path: ~/.ssh/id_rsa
- address: 192.168.1.11
user: ubuntu
role: [controlplane, etcd]
ssh_key_path: ~/.ssh/id_rsa
- address: 192.168.1.12
user: ubuntu
role: [worker]
ssh_key_path: ~/.ssh/id_rsa
kubernetes_version: v1.25.9-rancher2-1 # 指定 Kubernetes 版本
network:
plugin: calico # 网络插件(可选 Flannel/Canal/Calico)
options:
flannel_backend_type: "vxlan"
services:
etcd:
snapshot: true
creation: 6h
retention: 24h
4. 启动集群部署
rke up --config cluster.yml
- 部署完成后生成
kube_config_cluster.yml文件,用于访问集群。 - 验证集群状态:
export KUBECONFIG=$(pwd)/kube_config_cluster.yml kubectl get nodes
四、RKE 核心功能扩展
1. 集群升级
修改 cluster.yml 中的 kubernetes_version,执行:
rke up --config cluster.yml
2. 备份与恢复
- 备份 Etcd 数据:
rke etcd snapshot-save --name my-snapshot --config cluster.yml - 从快照恢复集群:
rke etcd snapshot-restore --name my-snapshot --config cluster.yml
3. 节点管理
- 添加新节点:在
cluster.yml中新增节点配置,重新运行rke up。 - 删除节点:移除节点配置后执行
rke remove --config cluster.yml。
五、RKE 与其他工具的对比
| 工具 | 核心特点 | 适用场景 |
|---|---|---|
| RKE | 声明式配置、高可用内置、离线部署支持 | 需要灵活控制组件的生产环境 |
| kubeadm | 官方工具、轻量级,但需手动配置高可用 | 学习或小规模集群 |
| kops | 专为 AWS 优化,自动化管理云资源 | AWS 环境的大规模集群 |
| Rancher | 提供 UI 管理界面,集成 RKE 和多种集群类型 | 多集群统一管理与监控 |
六、RKE 的最佳实践
- 生产环境建议
- 至少部署 3 个 Etcd 节点和 2 个 Control Plane 节点。
- 使用外部负载均衡器(如 HAProxy)替代内置
nginx-proxy。
- 安全加固
- 定期轮换 Kubernetes 证书:
rke cert rotate。 - 启用 Pod 安全策略(PSP)或 OPA Gatekeeper。
- 定期轮换 Kubernetes 证书:
- 监控与日志
- 集成 Prometheus + Grafana 监控集群状态。
- 使用 Fluentd 或 Logging-Operator 收集容器日志。
七、总结
RKE 凭借其简洁的声明式配置、高可用性支持和与 Rancher 生态的无缝集成,成为企业部署生产级 Kubernetes 集群的理想选择。它尤其适合以下场景:
- 需要快速构建离线或私有云环境中的 Kubernetes 集群。
- 对集群组件(如网络插件、容器运行时)有定制化需求。
- 计划通过 Rancher 实现多集群统一管理。
通过合理规划节点角色与网络架构,RKE 能够帮助用户轻松应对复杂的基础设施挑战。更多细节可参考 RKE 官方文档。
本文来自博客园,作者:茄子_2008,转载请注明原文链接:https://www.cnblogs.com/xd502djj/p/18809649
浙公网安备 33010602011771号