多集群注册、流量与配置分发
多集群不是默认选择。只有在合规数据驻留、跨区高可用、强租户隔离或单集群规模上限时才引入。每多一个集群,就多一套升级、证书、监控、配额和故障域。
常见模式:GitOps 每集群一份配置、集群网格做跨集群服务发现、控制平面管理集群生命周期、虚拟集群做租户隔离。
集群登记表(必须进 Git,不能只放在 wiki):
| 集群 | 区域 | 环境 | 用途 | Git 路径 | Owner |
|---|---|---|---|---|---|
| prod-sh-1 | 上海 | prod | 主集群 | clusters/prod-sh-1 | @sre |
| prod-sh-2 | 上海 | prod | 同城灾备 | clusters/prod-sh-2 | @sre |
| prod-bj-1 | 北京 | prod | 异地灾备 | clusters/prod-bj-1 | @sre |
Argo CD ApplicationSet 按集群分发:
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: platform-addons
namespace: argocd
spec:
generators:
- clusters:
selector:
matchLabels:
tier: prod
template:
metadata:
name: '{{name}}-addons'
spec:
project: platform
source:
repoURL: https://git.example.com/platform.git
targetRevision: main
path: addons
destination:
server: '{{server}}'
namespace: kube-system
syncPolicy:
automated:
prune: true
selfHeal: true
Cilium Cluster Mesh 跨集群连通:
cilium clustermesh enable --context prod-sh-1
cilium clustermesh enable --context prod-sh-2
cilium clustermesh connect --context prod-sh-1 --destination-context prod-sh-2
方案选择:
| 需求 | 首选方案 | 不建议 |
|---|---|---|
| 合规数据驻留 | 独立集群 + 本地存储 | 单集群多命名空间 |
| 跨区高可用 | 多集群 + 全局负载均衡 | 未验证的单集群多可用区 |
| 统一发布 | ApplicationSet 或 Fleet | 手工逐集群 kubectl |
决策规则:
合上页面,先回答,再展开对照。