单机单点 Rke2 Single 升级到 高可用 Rke2 HA

本文档详细记录了如何将一个运行在 192.168.10.5 的 Rke2 单点实例升级为高可用(HA)集群,涉及 192.168.10.5、192.168.10.6 和 192.168.10.7 三台服务器。通过修改配置文件,添加 token 和 TLS SAN,逐步将其他两台服务器加入集群,最终实现所有节点的状态为 Ready。

第一台:192.168.10.5,weifor5
第二台:192.168.10.6,weifor6
第三台:192.168.10.7,weifor7

**第一步,单点安装在 192.168.10.5(weifor5):**
指定版本:
curl -sfL http://rancher-mirror.rancher.cn/rke2/install.sh | INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_VERSION=v1.22.7+rke2r2 sh -

开机自启动,并手动启动kre2服务(第一次启动需要下载镜像等文件,需要一定时间):
systemctl enable rke2-server.service && systemctl start rke2-server.service

查看启动日志(另外开一个对话框)
journalctl -u rke2-server -f

安装完成可以查看到:
kubectl get nodes
NAME      STATUS   ROLES                              AGE    VERSION
weifor5    Ready    control-plane,etcd,master   3d1h   v1.22.7+rke2r2


**第二步,升级到高可用**
**第一台 192.168.10.5,

<think> 我收到了一个用户查询,是关于RKE2实现高可用的方法和方案的。用户提到了几个站内引用,我需要仔细分析这些引用来提取关键信息。 首先看引用[1],它描述了RKE2 Rancher高可用部署方案。这里的关键点是服务器规划:有三台Nginx服务器用于负载均衡(主备两台),六台rke2节点(三台master节点处理控制平面,三台agent节点作为worker),还有一个VIP通过Keepalived实现高可用。这暗示了核心方法涉及负载均衡器、多个控制平面节点和虚拟IP。 引用[2]提到了rke2-server服务作为主服务管理Kubernetes控制平面,启动命令是systemctl start rke2-server.service。这说明在节点上需要启动特定服务来参与集群。 引用[3]展示了另一个集群规划,三台服务器都作为controlplane、worker和etcd角色,这体现了RKE2的灵活性——节点可以兼任多个角色以实现紧凑的高可用部署。 引用[4]讨论了从单节点升级高可用的步骤,包括配置token和tls-san参数,这表明配置文件的设置对集群组建至关重要。 综合这些信息,我归纳出RKE2高可用的核心要素:通过奇数个server节点(至少三台)构建控制平面高可用,使用外部负载均衡器(如Nginx)分发流量,结合Keepalived实现VIP故障切换,以及正确配置集群参数如token和tls-san。同时,agent节点处理工作负载,确保整体架构的冗余性。 在回答组织上,我会分步骤解释部署方案:先描述节点规划和高可用原理,再说明如何配置和启动服务,最后强调关键配置项。这样可以清晰引导用户理解实现方法。最后补充相关问题延伸学习,比如负载均衡器选择或升级路径。 为了确保回答可靠,我严格基于引用内容,避免添加外部知识。比如引用[1]明确提到Nginx和Keepalived的使用,就直接采用;引用[4]的配置示例也原样引用。数学表达式和代码块会按系统指令要求格式化(如VIP设置部分可能涉及网络计算)。 现在准备用中文撰写回答:先概述方案,再分点详述节点规划、负载均衡、配置启动等步骤,末尾添加相关问题。引用标识会自然附在对应内容后,如服务器规划描述末尾加[^1]。 </think> 基于提供的参考资料,以下是 RKE2 实现高可用HA)的核心方法和方案详解: --- ### **RKE2 高可用方案核心组件** 1. **多控制平面节点(Server 节点)** - 需部署 **奇数个 server 节点**(至少 3 台),构成 Kubernetes 控制平面高可用集群。 - 节点通过内置的 **etcd** 实现分布式数据存储,确保集群状态一致性[^1][^3]。 - 示例配置: ```plaintext 192.168.200.34 node1 (master|Control-Plane) 192.168.200.35 node2 (master|Control-Plane) 192.168.200.36 node3 (master|Control-Plane) ``` 2. **负载均衡器(LB)** - 使用 **Nginx** 或 **HAProxy** 作为前端负载均衡器,将流量分发到 server 节点。 - 需配置主备 LB 防止单点故障(如 Nginx 主备服务器)[^1]: ```plaintext 192.168.200.40 nginx1 (主 LB) 192.168.200.41 nginx2 (备 LB) ``` 3. **虚拟 IP(VIP)** - 通过 **Keepalived** 实现 VIP 高可用。 - 客户端和 Agent 节点通过 VIP 访问控制平面,LB 故障时自动切换[^1][^3]: ```plaintext VIP: 192.168.200.110 (rke2.lintao.com) ``` 4. **工作节点(Agent 节点)** - Agent 节点(Worker)负责运行工作负载,连接到 LB/VIP 加入集群[^1][^3]: ```plaintext 192.168.200.37 node4 (agent|Worker) 192.168.200.38 node5 (agent|Worker) ``` --- ### **具体实施步骤** #### 1. **节点初始化与配置** - 所有节点需: - 禁用防火墙/SELinux(或配置允许规则)。 - 配置主机名解析(如 `/etc/hosts` 包含所有节点 IP 和主机名)。 - 安装依赖工具(如 `curl`、`wget`)。 #### 2. **启动第一个 Server 节点** ```bash # 节点1(192.168.200.34)执行: curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="server" sh - systemctl enable rke2-server.service systemctl start rke2-server.service ``` - 生成集群 token: ```bash cat /var/lib/rancher/rke2/server/node-token ``` - 记录 token(后续节点加入需使用)[^4]。 #### 3. **配置其他 Server 节点** - 创建配置文件 `/etc/rancher/rke2/config.yaml`: ```yaml token: K10a2347d16c12b05dad3ea90b007eb11d5c3191062c29271eee1afb344ba887c86::server:fecc0a409fd6023ba52ae28c6266eaaa # 替换为实际 token server: https://192.168.200.110:9345 # 指向 VIP tls-san: - rke2.lintao.com # 域名需解析到 VIP ``` - 启动服务: ```bash systemctl start rke2-server.service ``` #### 4. **配置负载均衡器(Nginx 示例)** - 主备 Nginx 配置 `/etc/nginx/nginx.conf`: ```nginx stream { upstream rke2_servers { server 192.168.200.34:9345; # node1 server 192.168.200.35:9345; # node2 server 192.168.200.36:9345; # node3 } server { listen 9345; proxy_pass rke2_servers; } } ``` - 使用 Keepalived 绑定 VIP 到主 Nginx 服务器[^1]。 #### 5. **加入 Agent 节点** - 在 Agent 节点创建配置文件 `/etc/rancher/rke2/config.yaml`: ```yaml server: https://192.168.200.110:9345 # 指向 VIP token: <上一步生成的 token> ``` - 启动 Agent 服务: ```bash systemctl start rke2-agent.service ``` --- ### **关键配置项解析** | 参数 | 作用 | |---------------|----------------------------------------------------------------------| | `token` | 集群加入凭证,所有节点需一致[^4]。 | | `server` | Agent 或新增 Server 节点连接的 VIP/LB 地址[^3][^4]。 | | `tls-san` | 在证书中添加备用名称(如域名、VIP),避免 TLS 验证失败[^4]。 | | `node-taint` | 为 Server 节点添加污点(如 `NoSchedule`),避免工作负载调度到控制平面。 | --- ### **验证高可用** 1. **集群状态检查** ```bash kubectl get nodes -o wide # 确认所有节点状态为 Ready ``` 2. **故障转移测试** - 停止任一 Server 节点,观察服务是否自动切换。 - 停止主 LB,测试备 LB 是否接管 VIP。 --- ### **数据库高可用(可选)** - MySQL 等有状态服务可部署为主备模式,通过容器挂载持久化数据[^1]: ```yaml volumes: - /mnt/mysql/data:/var/lib/mysql # 数据目录挂载 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值