4、多集群架构概述:联邦集群、Hub-Spoke架构、服务网格跨集群通信、镜像拉取场景分析

在云原生生产环境中,单一集群往往无法满足地理分布、故障隔离、资源弹性及合规要求。多集群架构已成为企业级 Kubernetes 部署的标配。本章从镜像拉取安全的视角,梳理四种主流多集群架构模式,并分析每种模式下镜像拉取的流量路径与安全边界。

4.1 联邦集群(KubeFed)

Kubernetes 联邦(KubeFed)通过一个控制平面管理多个成员集群,将资源(Deployment、Service、Ingress 等)同步到所有或部分成员集群。联邦控制平面负责策略分发与状态协调。

  • 镜像拉取特点:每个成员集群独立从各自配置的镜像仓库拉取镜像;联邦层不参与镜像传输。
  • 安全风险:镜像拉取凭证需在每个成员集群中单独配置,凭证同步易出现遗漏或泄露。
  • 适用场景:跨区域应用部署、灰度发布、灾备。
关键提示:联邦集群模式下,镜像拉取安全策略必须逐集群审计,联邦层无法统一管控镜像仓库访问凭证。

4.2 Hub-Spoke 架构

Hub-Spoke 架构以一个中心集群(Hub)作为管理入口,多个工作集群(Spoke)通过 klusterlet 或 agent 注册到 Hub。典型实现包括 Open Cluster Management(OCM)和 Rancher。

组件 角色 镜像拉取职责
Hub 集群 策略下发、资源模板管理 不直接拉取工作负载镜像
Spoke 集群 运行实际工作负载 从镜像仓库拉取镜像
镜像仓库 存储容器镜像 接受 Spoke 集群的拉取请求

Hub-Spoke 架构下,镜像拉取流量完全发生在 Spoke 集群与镜像仓库之间,Hub 仅作为策略控制面。安全配置需关注 Spoke 集群的 imagePullSecrets 管理以及仓库访问控制列表(ACL)。

4.3 服务网格跨集群通信

服务网格(如 Istio、Linkerd)通过 Sidecar 代理实现跨集群服务间通信。网格控制平面(如 Istiod)可以跨集群统一管理流量路由、mTLS 加密和访问策略。

  • 镜像拉取路径:服务网格不直接参与镜像拉取;镜像仍由 kubelet 从仓库拉取。
  • 安全增强:网格可对镜像仓库的访问实施 mTLS 认证,防止中间人攻击。
  • 典型拓扑:多集群共享同一个网格控制平面,或通过 Mesh Federation 互联。
注意:服务网格的跨集群通信加密并不覆盖镜像拉取阶段的传输安全。镜像拉取仍需独立配置 HTTPS 和仓库证书。

4.4 镜像拉取场景分析

下表对比四种架构在镜像拉取方面的关键差异:

架构模式 镜像拉取发起方 凭证管理方式 跨集群镜像同步 安全风险等级
联邦集群 各成员集群独立拉取 逐集群配置 Secret 不支持 中
Hub-Spoke Spoke 集群拉取 Hub 分发凭证到 Spoke 可选(通过仓库复制) 中高
服务网格 kubelet 拉取 节点级或命名空间级 Secret 不支持 低
独立多集群 各集群独立拉取 手动配置 不支持 高

4.5 多集群镜像拉取架构总览

下图展示三种主流多集群架构下镜像拉取的流量路径与安全边界:

多集群镜像拉取架构总览 多集群镜像拉取架构总览 镜像拉取路径 控制/管理路径 凭证分发路径 联邦集群 联邦控制平面 成员集群 A 成员集群 B 镜像仓库 Hub-Spoke 架构 Hub 集群 Spoke 集群 1 Spoke 集群 2 镜像仓库 服务网格跨集群 网格控制平面 集群 1 集群 2 镜像仓库 mTLS 说明:所有架构中镜像拉取均由 kubelet 直接向仓库发起;Hub-Spoke 架构支持凭证从 Hub 分发到 Spoke。

4.6 镜像拉取安全配置要点

针对上述架构,镜像拉取安全配置需关注以下维度:

  1. 凭证隔离:每个集群使用独立的 imagePullSecrets,避免跨集群凭证泄露。
  2. 仓库访问控制:配置镜像仓库的 IP 白名单或 TLS 双向认证,仅允许已知集群拉取。
  3. 镜像签名验证:在 kubelet 或准入控制器中启用 cosign 或 Notary 验证。
  4. 拉取流量加密:确保镜像仓库暴露 HTTPS 端点,kubelet 配置 --image-pull-progress-deadline 和可信 CA 证书。
  5. 审计日志:开启镜像仓库的访问日志,监控异常拉取行为。
最佳实践:在 Hub-Spoke 架构中,使用 ManagedClusterImagePullSecret 自定义资源将凭证从 Hub 自动同步到所有 Spoke 集群,减少人工配置错误。