关于 Pod 的多网络支持


本页面介绍 Pod 的多网络支持,包括应用场景、相关概念、术语和优势。

概览

Google Cloud 在虚拟机 (VM) 实例级层支持多个网络接口。您可以通过多个网络接口将一个虚拟机最多连接到 8 个网络,包括默认网络外加 7 个其他网络。

Google Kubernetes Engine (GKE) 网络将多网络功能扩展到节点上运行的 Pod。Pod 的多网络支持使您可以在 GKE 集群中的节点和 Pod 上启用多个接口。Pod 的多网络支持消除了节点池的单个接口限制,使节点网络不再被限制为单个 VPC。

Network Function Optimizer (NFO) 是一项适用于 GKE 的网络服务,可提供多网络支持、永久性 IP 地址和高性能 Kubernetes 原生数据平面。NFO 在 GKE 上启用容器化网络功能。多网络是 NFO 的基本支柱之一。

如需使用 Pod 和节点的多网络支持,请参阅设置 Pod 的多网络支持

术语和概念

本页面使用以下概念:

主要 VPC:主要 VPC 是一个预配置的 VPC,具有一组默认设置和资源。GKE 集群在此 VPC 中创建。如果您删除预配置的 VPC,则 GKE 集群会在主要 VPC 中创建。

子网:在 Google Cloud 中,子网是在 VPC 中使用网络掩码创建无类别域间路由 (CIDR) 的方法。子网具有一个分配给节点的主要 IP 地址范围,并且可以具有多个属于 Pod 和 Service 的次要范围。

节点网络:节点网络是一个专用的 VPC 和子网对。在此节点网络中,属于节点池的节点会被分配主要 IP 地址范围中的 IP 地址。

次要范围:Google Cloud 次要范围是属于子网的 CIDR 和网络掩码。GKE 会将它用作第 3 层 Pod 网络。一个 Pod 可以连接到多个 Pod 网络。

Pod 网络:充当 Pod 连接点的网络对象。连接的类型可以是 Layer 3,也可以是 Device。您可以在 netdevice 或数据平面开发套件 (DPDK) 模式下配置 Device 类型的网络。

Layer 3 网络对应于子网上的一个次要范围。Device 网络对应于 VPC 上的一个子网。GKE 多网络中 Pod 网络的数据模型如下:

  • 对于 Layer 3 网络:VPC -> 子网名称 -> 次要范围名称

  • 对于 Device 网络:VPC -> 子网名称

默认 Pod 网络:Google Cloud 会在集群创建期间创建默认 Pod 网络。默认 Pod 网络使用主要 VPC 作为节点网络。默认情况下,所有集群节点和 Pod 都可以使用默认 Pod 网络。

具有多个接口的 Pod:Pod 上的多个接口不能连接到同一 Pod 网络。

下图展示了具有 Layer 3 网络的典型 GKE 集群架构:

多网络集群

对于可在 netdeviceDPDK 模式下配置的 Device 类型网络,系统会将虚拟机 vNIC 作为资源进行管理并传递给 Pod。在这种情况下,Pod 网络直接映射到节点网络。Device 类型的网络不需要次要范围。

Pod 和节点网络

使用场景

Pod 的多网络支持适用于以下应用场景:

  • 部署容器化网络功能:如果您运行具有不同数据和管理平面的容器中网络功能。Pod 的多网络可为不同用户平面、特定接口的高性能或低延迟或是网络级多租户隔离网络。这可以确保合规性、服务质量 (QoS) 和安全性。
  • 在同一组织和项目中连接 VPC:您想要在一个 VPC 中创建 GKE 集群,并需要连接到另一个 VPC 中的服务。您可以使用多 NIC 节点选项进行直接连接。这可能是由于中心辐射型模型,即集中式服务(日志记录、身份验证)在 hub VPC 内运行,而 spoke 需要通过专用连接来访问它。您可以使用 Pod 的多网络支持将 GKE 集群中运行的 Pod 直接连接到 hub VPC。
  • 运行使用 VFIO 的 DPDK 应用:您想要运行通过 VFIO 驱动程序访问节点上的 NIC 的 DPDK 应用。您可以通过完全绕过内核、Kubernetes 和 GKE Dataplane V2 来获得最佳数据包速率。
  • 绕过 Kubernetes 和 GKE Dataplane V2 直接访问 vNIC:您运行需要直接访问节点上的网络接口卡 (NIC) 的容器中网络功能。例如,希望绕过 Kubernetes 和 GKE Dataplane V2 以实现最短延迟时间的高性能计算 (HPC) 应用。某些应用还希望访问 NIC 的 PCIe 拓扑信息以与其他设备(如 GPU)搭配使用。

优势

Pod 的多网络支持具有以下优势:

  • 流量隔离:Pod 的多网络支持使您可以隔离 GKE 集群中的流量。您可以创建具有多个网络接口的 Pod,以在运行特定云原生网络功能 (CNF) 的 Pod 中根据功能(如管理和数据平面)隔离流量。
  • 双宿:双宿使 Pod 可以具有多个接口并将流量路由到不同的 VPC,从而允许 Pod 同时与主要 VPC 和次要 VPC 建立连接。如果一个 VPC 遇到问题,应用可以改为使用次要 VPC。
  • 网络分段:Pod 可以根据工作负载需求连接到内部或外部网络。根据工作负载的特定要求,您可以选择将哪些 Pod 或 Pod 组连接到每个网络。例如,您可以使用内部网络进行东西通信,使用外部网络进行互联网访问。这样,您就可以根据工作负载的特定需求定制其网络连接。
  • 通过 DPDK 实现最佳性能:GKE 中的 Pod 多网络支持使 DPDK 应用可以在 GKE Pod 中运行,从而提供最佳数据包处理性能。
  • 在 Pod 中直接提供主机 NIC:支持多网络的 netdevice 模式 NIC 绕过 Kubernetes 和 GKE Dataplane V2,将虚拟机 NIC 直接传递给 Pod。这可以最大限度地缩短设备之间的协作延迟时间。
  • 性能:如需提升应用的性能,您可以将应用连接到最符合应用需求的网络。

后续步骤