Appearance
多节点集群与低成本重建
这一页讲两件事:为什么必须多节点,以及环境释放后如何低成本重搭。
1. 为什么必须多节点
单机 K8s 能跑容器,但验证不了:
- 跨节点调度与网络;
- Kafka/SeaweedFS/Doris 的多副本;
- 节点故障后的 Pod 漂移;
- 控制面与工作负载分离。
所以数据平台至少 3 节点,哪怕只是测试。
2. 推荐拓扑
text
3 节点:
node1 control-plane + 部分组件
node2 worker
node3 worker
5 节点(可选):
node1-3 control-plane
node4-5 worker3 节点够做功能验证;5 节点才适合做 HA/故障演练。
不要用 3 台 16G 硬撑全栈,内存会先爆。
3. 采购硬性要求
- [ ] 同一 VPC,内网互通;
- [ ] 数据盘是裸盘,能自己格式化;
- [ ] CPU 支持 AVX2(Doris);
- [ ] 能开放 NodePort 安全组;
- [ ] 支持快照或自定义镜像;
- [ ] 关机/释放计费规则清楚。
4. 存储选择
| 方案 | 适合 |
|---|---|
| local-path | 测试、单节点数据 |
| SeaweedFS | S3 兼容、Iceberg 数据 |
| Ceph | 生产级分布式块/对象存储 |
测试期推荐 local-path + SeaweedFS;Ceph 需要裸盘和更多维护时间。
5. 低成本重建原则
5.1 环境即代码
- K8s 初始化脚本;
- 每个组件的 values/manifest;
- 建库、建桶、建 topic 的 SQL/脚本;
- 造数脚本固定 seed。
5.2 镜像可恢复
- 大镜像推到 Harbor 或导出 tar;
- 不依赖“节点上刚好有某个镜像”;
- 记录镜像 tag,不用
latest。
5.3 数据可重建
- 测试数据用固定 seed 重新生成;
- Iceberg 数据文件不长期保留;
- 元数据库只保留脚本,不依赖手工状态。
5.4 组件按需启动
- 先起 K8s + 存储 + PG;
- 再起 Kafka/Flink;
- 最后起 Doris/DS/OM;
- 不要一次性把所有组件拉起来抢内存。
6. 目录结构
建议把可复用内容放仓库:
text
deploy/
├─ bootstrap/ 节点初始化、kubeadm
├─ manifests/ PG/MySQL/Kafka/Flink/Doris/SHS
├─ values/ SeaweedFS/Harbor/DS/OM
├─ sql/ 建库、建表、topic
├─ scripts/ 造数、验证、清理
└─ README.md 重建顺序一次性排障脚本不要进仓库,避免污染。
7. 重建流程
text
1. 买 3 台,确认内网/数据盘/AVX2
2. 跑 bootstrap,三节点 Ready
3. 装 local-path + PG + SeaweedFS
4. 起 Kafka + MySQL + Flink
5. 起 Doris + DS + Harbor + SHS
6. 跑端到端和 1M 验证
7. 记录版本与结果按 实战教程 执行,不要凭记忆。
8. 成本控制
- 按天计费,验证完立即释放;
- 不用的组件先缩副本;
- 大镜像只拉一次,节点间分发;
- 测试数据控制在 1GB 内;
- 需要保留时做快照,不长期养机器。
9. 重建验收
- 三节点 Ready;
- 存储/PG/Kafka/Flink/Doris/DS 全部 Running;
- 端到端 1M 通过;
- SHS 能看到批任务;
- 文档记录版本、镜像 tag、验证结果。
达不到就不要继续加组件,先修基础。