这是《Docker 与 Kubernetes 零基础实战指南》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。 多集群用于隔离故障域、满足合规、降低爆炸半径、靠近用户和分离环境。它也带来分发、网络、身份和运维复杂度。
30.1 常见拓扑
环境多集群:dev / staging / prod
region 多集群:cn-north / cn-south
业务多集群:交易 / 数据 / 内部
容灾多集群:active / standby
30.2 分发方式
| 方式 | 工具 |
|---|---|
| GitOps | Argo CD ApplicationSet、Flux |
| 控制面同步 | Karmada、Clusternet |
| Helm pipeline | CI 逐环境部署 |
| 镜像同步 | Registry 复制 |
30.3 需要治理的内容
- 集群清单和版本;
- 命名规范;
- 权限和身份;
- 网络互联;
- DNS 与证书;
- 配置差异;
- 镜像同步;
- 监控聚合;
- 成本归属;
- 应急切换。
30.4 跨集群服务
方式:
| 方案 | 特点 |
|---|---|
| 全局负载均衡 | 用户流量就近 |
| Service Mesh 多集群 | 服务发现和 mTLS |
| API Gateway 路由 | 显式集成 |
| 消息异步同步 | 松耦合 |
不要为了技术炫技默认全互联,应按故障域和业务依赖设计。
30.5 容灾目标
| 指标 | 含义 |
|---|---|
| RTO | 恢复服务时间 |
| RPO | 可容忍数据丢失 |
跨集群数据库、消息和状态同步是难点,Kubernetes 本身只调度容器,不自动复制业务数据。
本章小结
多集群提升隔离性和可控性,但必须治理配置分发、网络、身份、数据和观测。先明确容灾与合规目标,再决定拓扑和工具。
思考题
- 为什么需要多集群?
- GitOps 如何分发多集群配置?
- 跨集群数据同步为什么困难?
- 多集群监控如何聚合?
- 如何验证容灾切换?