3.1 KiB
3.1 KiB
01-05-双控制节点HA(安装与准备)
本文只讲双控制节点 HA 的安装前准备与基础环境搭建。 具体集群参数切换、server 加入与迁移步骤见
03-08-k3s-ha-集群配置与切换.md。
前置条件
- 已完成
01-01-k3s-控制节点含traefik.md - 已完成
01-02-k3s-工作节点.md - 当前集群运行稳定,可执行维护窗口
目标与边界
- 目标:控制平面单点故障时仍可管理集群
- 边界:家庭网关(如 OpenWrt)可能仍是整体单点
安装准备清单
- 新增第二个 server 节点(示例
192.168.2.63) - 准备外部数据存储(MySQL/PostgreSQL/etcd)
- 准备
6443负载均衡(HAProxy) - 备份现有 token 与关键配置
外部 datastore 与 k3s server 最小示例
以下只给出一个“最小可参考”的 PostgreSQL + k3s server 参数示意,具体地址/账号请按你自己的环境调整:
- 若采用 01-01 的数据盘方案:在 server 参数中增加
--data-dir=/storage,与首节点一致(第二个 server 安装时同样需要)。
# 假设外部 PostgreSQL 已创建数据库与账号:
# host=192.168.2.50 dbname=k3s user=k3s password=strong-password
# 在首个 server(例如 192.168.2.61)上,默认数据目录:
sudo k3s server \
--datastore-endpoint="postgres://k3s:strong-password@192.168.2.50:5432/k3s?sslmode=disable" \
--tls-san 192.168.2.61 \
--tls-san 192.168.2.62 \
--tls-san 192.168.2.63 \
--tls-san 192.168.2.60 # 这里示例为 LB IP
# 若使用数据盘方案,增加 --data-dir=/storage,例如:
# sudo k3s server --data-dir=/storage \
# --datastore-endpoint="postgres://..." --tls-san ...
说明:上面的命令仅作为参数示意,实际部署时建议改用 systemd unit 或官方安装脚本的额外参数(
INSTALL_K3S_EXEC=...),并结合03-08-k3s-ha-集群配置与切换.md中的步骤执行。
从现有 worker 升级为第二控制节点(推荐路径)
在家庭实验室环境中,第二个控制节点通常可以直接复用一台已有的 worker 节点。整体思路是:
- 确认 worker 节点健康:
- 已按
01-02-k3s-工作节点.md正常加入集群; - 无关键 Pod 仅运行在该节点(可先用
kubectl drain或手动迁移工作负载)。
- 已按
- 在
01-05阶段完成外部 datastore 与 LB 准备:- 不要立即改动现有 server/worker 的 systemd 配置,只确保 datastore/LB 均已就绪。
- 在
03-09中按步骤将该 worker 替换为 server:- 停止该节点上的
k3s-agent服务(或执行官方卸载脚本); - 使用与首个 server 相同的 token/datastore/LB 地址重新以
server角色安装 k3s; - 最终形成“2 个 server + 若干 worker”的目标拓扑。
- 停止该节点上的
具体切换命令与顺序详见:
03-08-k3s-ha-集群配置与切换.md中的操作步骤。
基础验证
kubectl get nodes -o wide
kubectl get pods -A
风险提示
- 这是高级改造,建议在业务稳定后执行
- 执行前务必做完整备份
下一步
03-08-k3s-ha-集群配置与切换.md