本页面介绍如何在 Pod 级层使用防火墙规则来控制 Pod 和 Service 之间的网络流量。
应用的网络政策可帮助您定义 Pod 之间的通信流量规则。它控制 Pod 如何在其应用内相互通信以及如何与外部端点通信。您可以在启用了多网络的 Google Kubernetes Engine (GKE) Enterprise 版集群中的 Pod 网络上启用网络政策。您可以在与用户指定的 Pod 网络相对应的其他 Pod 接口上强制执行网络政策。
为何要使用多网络网络政策
在以下情况下,您可能需要使用多网络网络政策:
需要增强的网络安全性:您想要通过为特定 Pod 网络定义网络政策来隔离和保护敏感工作负载或数据。多网络网络政策可防范数据暴露并减小攻击面。
需要精细的流量控制:您想要精确控制不同 Pod 网络上的 Pod 和 Service 之间的流量,从而实现复杂的网络拓扑及满足安全要求。
需要使用多租户环境:您想要为不同的租户或应用创建相互隔离的网络,确保它们不会干扰彼此的通信,同时保持对各 Pod 网络内网络访问的控制。
需要优化资源利用率:您想要在特定 Pod 网络上实施网络政策,以便根据应用要求高效地分配资源并确定流量优先级,从而提高应用性能和可靠性。
需要实现容器化网络功能 (CNF) 的安全性:您想要将同一 Pod 中的管理流量与数据平面流量隔离开来,以防止潜在的安全事故和未经授权的访问。
多网络网络政策如何在 Pod 网络中发挥作用
下图演示了使用注解应用于特定 Pod 网络的网络政策如何控制 GKE 集群中 Pod 之间的流量。
上图演示了多个运行 Pod(容器化应用)的工作器节点,以及它们如何使用网络基础架构在同一节点内或不同节点之间通信。该图还演示了如何使用网络政策通过 VPC 和子网来控制网络流量及进行网络分段,以增强安全性并加强组织。
- 通过有针对性的网络政策隔离流量:由于添加了
networking.gke.io/network: blue-Pod-network
注解,网络政策仅影响 Pod 网络“blue”上的流量。默认 Pod 网络上的流量仍不受限制。 - 通过 Pod 网络政策强制执行单向流量:在上图中,网络政策允许 Pod 网络“blue”上的 Pod1 将流量发送到 Pod2,而 Pod2 却无法将流量发回同一网络上的 Pod1。对带有“test-app-2”标签的 Pod 实施的网络政策充当单向通道。该网络政策仅允许传出流量流向带有“test-app-3”标签的 Pod,而不允许与“test-app-1”等其他 Pod 进行通信。
- 默认允许传出流量:如果未为 Pod(在此示例中为 Pod1)定义出站流量政策,则网络接口“blue”默认允许所有传出流量。
- 确保现有功能兼容:所有标准 GKE 网络政策选项(如标签选择器和 IP 地址块)都适用于多网络网络政策。
- 通过注解控制网络政策范围:
- 如果您创建不带注解的网络政策,则 GKE 会将多网络网络政策应用于所选命名空间内 Pod 的所有网络接口,无论它们连接到哪个 Pod 网络。
- 如果您添加注解并指定一个有效 Pod 网络的名称(例如
networking.gke.io/network: blue-Pod-network
),则 GKE 会将该政策应用于连接到该特定 Pod 网络的 Pod。 - 如果注解引用了集群中实际不存在的 Pod 网络,则 GKE 不会将网络政策应用于任何 Pod;这是因为没有 Pod 会连接到不存在的指定网络。
- 维护具有多个网络接口的 Pod 的跨网络通信:如果您应用网络政策来限制 Pod 中特定 Pod 网络上的流量,则不会影响连接到同一 Pod 的其他 Pod 网络上的流量。
优势
以下是使用多网络网络政策的好处:
可提高安全性:您可以通过精细应用网络政策来缓解 GKE 集群中与未经授权的访问和横向移动相关的风险。
可实现灵活性和自定义:您可以定制适合各种工作负载和应用的网络政策,满足不同 Pod 网络的特定安全和流量管理需求。
可简化网络管理:您可以通过使用网络政策避免创建过多的 Pod 网络并对通信进行精细控制,从而简化网络管理并降低复杂性。
可优化费用:避免创建过多 Pod 网络,从而优化资源利用率并降低与网络基础架构相关的费用。
可针对 CNF 实现增强型保护:您可以通过隔离管理流量和数据平面流量以及对各部署应用特定网络政策,来确保 CNF 部署的安全性和完整性。
后续步骤
在 Pod 级层控制 Pod 和 Service 之间的流量