4. 单集群扁平网络拓扑:架构特点、适用场景(中小规模团队)、优缺点分析

单集群扁平网络拓扑是平台工程 IDP 中最简洁的网络模型。所有工作负载、中间件、监控组件共享同一个 Kubernetes 集群,且 Pod 之间通过 Overlay 或直接路由实现二层/三层互通,不引入额外的网络隔离域(如多集群、多 VPC 或 Service Mesh 的复杂路由规则)。这种拓扑在中小规模团队中极为常见,是快速搭建 IDP 的首选方案。

4.1 架构特点

  • 单一控制面:整个 IDP 只运行一个 Kubernetes 集群,API Server、Scheduler、Controller Manager 均为单实例(或 HA 对),运维复杂度最低。
  • 扁平 Pod 网络:所有 Namespace 下的 Pod 均分配同一 CIDR 段(如 10.0.0.0/16),Pod 间默认互通,无需额外网络策略即可通信。
  • 共享基础设施:CI/CD Runner、镜像仓库、日志收集器、监控 Agent 等平台组件与业务 Pod 运行在同一集群内,通过 NodePort 或 Ingress 暴露服务。
  • 无跨集群流量:所有服务调用均为本地集群内通信,延迟低,不依赖 VPN 或专线。
架构要点:扁平网络的核心假设是“信任域等于集群边界”。在中小规模团队中,这一假设通常成立,因为团队人数少、应用数量有限、安全合规要求相对宽松。
单集群扁平网络拓扑结构 单集群扁平网络拓扑结构 Kubernetes 集群边界(单一控制面) 控制面(API Server / Scheduler / CM) 扁平 Pod CIDR:10.0.0.0/16 业务工作负载 Pod A (10.0.1.2) Pod B (10.0.1.3) Pod C (10.0.1.4) 平台组件 Jenkins Agent Prometheus Server Loki / Grafana 中间件 MySQL / PostgreSQL Redis / Kafka Elasticsearch 所有 Pod 在同一 CIDR 内直接通信,无跨集群网络开销 控制面、业务、平台、中间件共享同一集群资源池

4.2 适用场景(中小规模团队)

单集群扁平网络并非万能方案,但在以下场景中表现出色:

场景维度 典型特征 适配原因
团队规模 5~30 人 运维人力有限,单集群降低管理负担;扁平网络减少排障链路
应用数量 10~50 个微服务 单一集群足以承载,无需多集群资源隔离
安全合规 无强制多租户隔离要求 扁平网络默认全通,通过 NetworkPolicy 可满足基本隔离
迭代速度 追求快速验证、频繁发布 网络配置极简,CI/CD 流水线无需处理跨集群部署逻辑
基础设施 单云或单机房 无需跨区域网络互联,延迟和带宽可控
实践建议:如果你的团队正在从“手工部署”向“平台工程”转型,单集群扁平网络是阻力最小的起点。先跑通 IDP 核心流程,再根据增长情况评估是否拆分。

4.3 优缺点分析

优点

  • 运维极简:只需管理一个集群、一个 CNI 插件、一套监控体系。升级、备份、扩缩容操作集中。
  • 低延迟通信:Pod 间通信不经过网关或跨集群隧道,延迟通常在 1ms 以内,适合对性能敏感的中间件(如 Redis、Kafka)。
  • 资源利用率高:所有工作负载共享节点池,不存在多集群间的资源碎片。通过 Cluster Autoscaler 即可弹性伸缩。
  • 调试友好:kubectl exec、port-forward、日志查看均在单一上下文中完成,无需切换集群上下文。
  • 成本可控:无需为多集群支付额外的控制面费用或网络传输费。

缺点

  • 爆炸半径大:控制面故障、CNI 配置错误、资源耗尽等单点问题会影响整个 IDP 平台。
  • 多租户隔离弱:扁平网络下,恶意 Pod 可能扫描并攻击其他 Namespace 的服务。NetworkPolicy 能缓解但无法做到物理级隔离。
  • 规模上限明显:单一集群通常建议 Pod 数量不超过 5000~10000 个,节点不超过 500 个。超出后 API Server 性能、etcd 压力、CNI 路由表均会面临挑战。
  • 升级风险集中:集群版本升级、CNI 插件升级、内核参数调整都会影响所有运行中的工作负载。
  • 缺乏故障域:无法像多集群那样通过“集群级故障转移”实现高可用,一旦集群不可用,整个 IDP 中断。
单集群扁平网络优缺点对比 单集群扁平网络优缺点对比 ✅ 优点 • 运维极简:单集群、单 CNI、单监控栈 • 低延迟:Pod 间通信 < 1ms • 高资源利用率:共享节点池,无碎片 • 调试友好:单一 kubectl 上下文 • 成本可控:无额外控制面/网络费用 ❌ 缺点 • 爆炸半径大:单点故障影响全局 • 多租户隔离弱:依赖 NetworkPolicy • 规模上限:Pod < 10000,节点 < 500 • 升级风险集中:影响所有工作负载 • 缺乏故障域:无集群级高可用 适用阶段:团队 < 30 人、应用 < 50 个、安全要求中等

4.4 架构决策要点

在决定采用单集群扁平网络拓扑前,建议团队对照以下清单进行自评:

  1. 团队规模是否长期保持在 30 人以下?——是则单集群足够,否则需提前规划多集群拆分。
  2. 是否存在严格的合规隔离要求(如 PCI-DSS、HIPAA)?——是则需考虑多集群或强 NetworkPolicy + 命名空间隔离方案。
  3. 应用数量是否会在 6 个月内超过 100 个微服务?——是则需评估集群容量,或采用命名空间资源配额 + HPA 精细化管控。
  4. 是否接受“集群故障 = 平台故障”的风险?——是则单集群可接受;否则应引入多集群容灾。
  5. 是否有专职的 Kubernetes 运维人员?——无则单集群扁平网络是最安全的选择,降低运维复杂度。
避坑提醒:不要因为“扁平网络简单”就忽略 NetworkPolicy 的配置。即使团队规模小,也建议至少为每个 Namespace 设置默认拒绝入站策略,防止无意中的端口暴露。否则一旦某个 Pod 被攻破,整个集群内部网络将完全暴露。

4.5 典型部署示例

以下是一个 20 人团队 IDP 的典型部署配置:

# 集群规格
集群版本: v1.28
节点数量: 10 台 (8C16G)
Pod CIDR: 10.0.0.0/16
Service CIDR: 10.96.0.0/12
CNI: Calico (VXLAN 模式)

# 命名空间规划
- idp-system:    平台组件 (Jenkins, ArgoCD, Harbor)
- idp-monitoring: 监控栈 (Prometheus, Grafana, Loki)
- idp-logging:    日志收集 (Fluentd, Elasticsearch)
- team-alpha:     业务团队 A 的工作负载
- team-beta:      业务团队 B 的工作负载

# 网络策略示例 (默认拒绝入站)
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-ingress
  namespace: team-alpha
spec:
  podSelector: {}
  policyTypes:
  - Ingress

该配置下,所有团队共享同一集群和扁平网络,但通过 NetworkPolicy 实现基本的命名空间间隔离。CI/CD 流水线直接部署到对应命名空间,无需处理跨集群分发逻辑。