GDC 中的子网和 IP 地址

子网是 IP 地址网络的逻辑细分,可为您的服务提供可管理的分段。您可以定义具有特定 IP 地址范围的子网,也可以在 Google Distributed Cloud (GDC) 网闸隔离配置中将其配置为动态分配。

本文档适用于平台管理员群组中的网络管理员和应用运营商群组中的应用开发者,他们负责管理其服务的网络流量。如需了解详情,请参阅适用于 GDC 网闸隔离配置文档的受众群体。

GDC 中的网络

GDC 组织中有两种不同的网络类型,您可以为其分配 IP 地址:

  • 虚拟私有云 (VPC):分配有内部 IP 地址的网络,这些地址只能由组织内的工作负载访问。
  • 外部网段:分配有外部 IP 地址的网络,这些地址可由连接到贵组织的外部网络访问。

您可以在每种网络类型中分配子网,以实现特定目标。子网是 IP 地址网络的逻辑细分,由无类别域间路由 (CIDR) 范围定义。借助 CIDR 范围,您可以表示 IP 地址及其对应的网络,以供服务使用。这些网络类型中的每个网络都有一个独立的子网树。

VPC 内的子网可从 GDC 网络内访问,无法从 GDC 外部访问。VPC 子网可用于在组织内分配内部 IP 地址。网段子网会向连接到组织的外部网络公开,并允许您向组织外部的网络提供外部 IP 地址。

每个网络都将子网组织成一个分层树状结构,以便在网络的不同部分(例如可用区、服务或工作负载)之间提供 IP 地址范围的逻辑细分和分配。如需了解详情,请参阅子网层次结构。

VPC 网络

VPC 网络使用只能在组织内部访问的内部 IP 地址,组织外部的网络无法访问这些地址。

GDC 领域中有两个可用的 VPC 网络:

  • 默认 VPC:为多个可用区内和跨多个可用区的内部工作负载(例如容器和虚拟机 [VM])分配 IP 地址的 VPC。
  • Infra VPC:一个系统管理的 VPC,用于托管第一方 GDC 网闸隔离配置服务,例如 Vertex AI、Observability API 和 GDC 控制台。在规划组织的 IP 地址架构时,您只需在此 VPC 中定义 IP 地址。

在同一组织内,默认 VPC 和 Infra VPC 中的 IP 地址不能相互重叠。如需了解详情,请参阅限制。

在 VPC 网络中创建子网,以便为内部工作负载分配额外的 IP 地址。

外部网段

外部网段会分配有外部 IP 地址,这些地址可供连接到贵组织的外部网络访问。GDC 中的网段仅分配有外部 IP 地址。

GDC 提供以下逻辑隔离的网段:

您可以使用不同的互连将网段连接到其他外部网络。网段内的 IP 地址不能相互重叠。如需了解详情,请参阅限制。

在网段中创建子网,以便为必须连接到 GDC 组织外部的网络的服务分配额外的外部 IP 地址。

子网层次结构

子网按其类型分类:

  • 根:可从中派生其他子网的顶级子网。在预配组织期间,系统会在每个网络中创建一个全局根子网。
  • 分支:派生自根子网或其他分支子网的子网,用于进一步细分 IP 地址空间。
  • 叶:最小的细分,通常用于为特定服务或资源分配 IP 地址。

您可以细分子网,以便为网络分配 IP 地址。

以下示例图说明了不同子网类型如何相互连接:

  • 10.0.0.0/16 的根子网,用作主要 IP 地址分配的顶级块。
  • 从根子网派生出两个分支子网,其值分别为 10.0.1.0/24 和 10.0.2.0/24。这些分支子网表示根地址空间的细分,用于更具体的用途。
  • 分支子网进一步细分为叶子网,其值包括 10.0.1.10/32、10.0.1.11/32 和 10.0.2.12/24。这些叶子网通常是最小的子网,通常会为特定服务或资源分配单个 IP 地址。

借助这种子网分层结构,您可以跨可用区、工作负载和服务高效地委托和组织网络,这些可用区、工作负载和服务依赖于网络中的 IP 地址。如需进一步控制子网分支,请将子网定义为静态或动态分配 CIDR 块。

全球和可用区级子网

在 GDC 中,您可以在两个不同的范围内预配子网:可用区级和全球级。可用区级子网和全球子网在不同的 API 服务器中定义和运行,并提供不同的功能。

为您的组织完成预配后,每个网络都会有一个全局根子网,该子网托管在组织的全局 API 服务器中。如需从全球根子网预配 IP 地址,您必须在全球 API 服务器中创建一个全球 Subnet 资源,该资源可向一个可用区或跨多个可用区预配 CIDR 块。在全局子网中,您可以定义 propagationStrategy 字段,以指明您希望如何在可用区之间分配 CIDR 块。此 IP 地址范围会作为可用区级根子网预配到可用区。

在可用区拥有自己的可用区级根子网后,您可以在可用区的 Management API 服务器中创建可用区级 Subnet 资源,以将子网的 IP 地址范围进一步划分为可用区内的其他分支子网,或可供可用区内的各个工作负载和服务使用的叶子网。

全球子网

您必须创建全球子网,以便将全球 API 服务器中托管的根子网中的 IP 地址分配给 GDC Universe 中的一个或多个可用区。

全局子网是在全局 API 服务器中使用 ipam.global.gdc.goog/v1 API 组创建的,并包含 zone 和 propagationStrategy 等可选字段,用于定义它们与特定可用区的交互。

全局子网托管一个 CIDR 块作为分支子网范围,该范围由 GDC 领域中的可用区使用。如需详细了解在何处创建全球子网,请参阅 GDC 中的网络。

可用区级子网

可用区级子网与特定运营可用区相关联,通常包含直接网络配置。可用区级子网严格在单个可用区内运行,主要为该可用区内的虚拟机和容器工作负载提供服务。可用区级子网会进一步分配已预配给可用区供全球子网使用的 IP 地址。

为确保跨可用区的 VPC 到 VPC 通信正常运行,每个可用区中必须使用不重叠的子网。

可用区级子网是使用 ipam.gdc.goog/v1 API 组在 Management API 服务器中创建的,其规范中包含一个可选的 networkSpec 字段,因此您可以定义可用区级网络元素,例如网关和 VLAN ID。

子网标签

子网标签有四种类型:

  • ipam.gdc.goog/vpc:将子网的网络指定为 VPC。
  • ipam.gdc.goog/network-segment:将子网的网络指定为网段。
  • ipam.gdc.goog/usage:指定子网的用途。
  • ipam.gdc.goog/subnet-group:指定子网所属的子网组。如需了解详情,请参阅子网群组。

下表显示了网络与网络标签之间的映射:

网络 标签
默认 VPC ipam.gdc.goog/vpc: default-vpc
基础设施 VPC ipam.gdc.goog/vpc: infra-vpc
管理员网段 ipam.gdc.goog/network-segment: admin
数据网络细分 ipam.gdc.goog/network-segment: data

这四个网络的 CIDR 范围会在引导过程中在您的组织中设置。四个对应的全球子网位于全球 API 服务器中。 这些全球子网是组织中所有可用区内每个网络的根级 CIDR 范围。所有根级全局子网都有另一个标签 ipam.gdc.goog/usage: network-root-range。

对于每个可用区,最初可在源自组织预配的全局 API 服务器中使用可用区级网络根子网。您可以创建其他根子网来扩展 IP 地址空间。每个根子网都托管特定可用区中网络的 CIDR 范围,并在逻辑上充当带有标签 ipam.gdc.goog/usage: zone-network-root-range 的可用区级根子网。此根子网必须最初在全局 API 服务器中创建,并自动传播到指定可用区。如需详细了解子网范围,请参阅全球和可用区级子网。

创建 Subnet 自定义资源时,您必须使用定义的标签,以将其应用于相应的 GDC 网络。 下图展示了 GDC 领域内的全球和可用区级网络:

子网位于可用区和全局 API 服务器中。

在此图中,有两个组织跨越一个多可用区 Universe。每个组织都会定义 VPC 网络和外部网段。在此示例中,任播 IP 地址用于在可用区级外部网段之间路由流量,以便由距离最近或性能最佳的可用区处理网络请求。如需详细了解任播 IP 地址,请参阅 GDC 中的 IP 地址。

子网群组

子网组是一组具有相同子网组标签(例如 ipam.gdc.goog/subnet-group: subnetgroup1)的子网。将子网整理到一个组中具有以下优势:

  • 子网组可简化伸缩由同一实体拥有或用于同一用途的 IP 地址资源。子网本身无法扩容,但您可以通过向子网组附加新子网来扩容子网组。用户可以将子网组作为其 IP 地址资源进行引用,并利用其伸缩便利性。
  • 创建子级子网时,用户可以引用子网组作为父级,而不是单个子网。通过以这种方式使用子网组,用户无需自行查找具有可用 IP 地址空间的父级子网。而是由 GDC 自动在子网组中查找具有足够可用 IP 地址空间的子网作为其父级。
  • 当用于单一用途或实体的 IP 地址资源用尽时,以子网组作为父级,子子网中的错误信息会更加直观,并减少检查每个子网的工作量。

所有子网组功能均适用于全球子网和可用区级子网。

子网组创建和伸缩

子网群组没有 API 对象。而是通过标签来标识子网组。如需创建子网群组或向子网群组添加子网,请向现有子网添加子网群组标签,或使用子网群组标签创建新子网。

如果子网群组尚不存在,系统会创建一个新的子网群组。如果同一命名空间中已有其他具有相同子网组标签的子网,则新子网会添加到现有子网组中。

以下示例展示了附加到名为 default-vpc-us-east67-b-group 的子网组的子网的定义:

apiVersion: ipam.gdc.goog/v1
kind: Subnet
metadata:
  # Several lines of code are omitted here.
  labels:
    ipam.gdc.goog/subnet-group: default-vpc-us-east67-b-group
    ipam.gdc.goog/usage: zone-network-root-range
    ipam.gdc.goog/vpc: default-vpc
  name: default-vpc-us-east67-b-root-cidr
  namespace: platform
  # Several lines of code are omitted here.
spec:
  ipv4Request:
    cidr: 10.99.0.0/16
  parentReference:
    name: default-vpc-root-cidr
    namespace: platform
    type: SingleSubnet
  type: Branch

创建和伸缩子网组的规则

创建子网群组时,请注意以下规则:

  • 子网群组是针对每个命名空间范围定义的。具有相同子网组标签但位于两个不同命名空间中的子网被视为属于两个不同的子网组。
  • 子网不能是同一组中其他子网的后代。
  • 同一组中的子网必须属于同一 VPC 或网段。
  • 一个子网只能附加到一个子网组。

子网组作为父级

创建子级子网时,除了使用单个子网作为父级子网之外,您还可以引用子网组作为父级子网。如需将子网组作为父级引用,您必须完成以下操作:

  1. 将 spec.parentReference.type 明确设置为 SubnetGroup。如果留空,则默认值为 SingleSubnet。
  2. 如果父级子网组与子级子网位于不同的命名空间中,则必须将 spec.parentReference.namespace 字段指定为父级子网组的命名空间。

从子网组创建子级子网后,GDC 会根据子级子网的请求以及父级子网组中子网的可用性,从子网组中分配 CIDR 块。如果找到合适的父级子网,则子级子网会从父级子网获取其 CIDR 块,并且父级子网的引用会在子级子网的状态中更新。

以下示例中的子网从 default-vpc-zone1-group 子网组请求 CIDR 块,并分配了状态为 platform/default-vpc-zone1-root-cidr 的父级 CIDR 块:

apiVersion: ipam.gdc.goog/v1
kind: Subnet
metadata:
# Several lines of code are omitted here.
  labels:
    ipam.gdc.goog/vpc: default-vpc
  name: default-vpc-default-node-subnet
  namespace: platform
# Several lines of code are omitted here.
spec:
  ipv4Request:
    prefixLength: 23
  networkSpec:
    enableGateway: true
    enableVLANID: false
  parentReference:
    name: default-vpc-zone1-group
    namespace: platform
    type: SubnetGroup
  type: Branch
status:
  allocatedParent:
    name: default-vpc-zone1-root-cidr
    namespace: platform
    type: SingleSubnet
# Several lines of code are omitted here.

将子网组作为父级引用的规则

将子网组作为父级引用时,请注意以下规则:

  • 子级子网的创建者必须有权使用子网组中的所有子网。
  • 子子网必须与子网组位于同一 VPC 或网段中。

静态和动态 CIDR 配置

定义子网时,您可以使用静态或动态配置来分配 CIDR 块。

通过静态 CIDR 配置,您可以明确指定子网的确切 CIDR 块。如果您需要精确控制 IP 地址空间,请静态分配 CIDR 块。使用 Subnet 自定义资源中的 spec.ipv4Request.cidr 字段指定确切的预定义 IP 地址范围。

动态 CIDR 配置允许系统自动为子网分配 CIDR 块,从而提供更大的灵活性。您无需提供完整的 CIDR,而是在 spec.ipv4Request.prefixLength 字段中指定所需的前缀长度。如果您希望系统自动将 IP 地址委托给子网,请动态分配 CIDR 块,从而简化网络规划并降低 IP 地址冲突的风险。系统会从父级网络中选择指定大小的可用 CIDR 块。

如需了解详情,请参阅 SubnetRequest API。

GDC 中的 IP 地址

虚拟机和负载均衡器等资源在 GDC 中具有 IP 地址。通过这些 IP 地址,GDC 资源可以与组织内的其他资源或连接到组织的外部网络进行通信。GDC Universe 中提供以下 IP 地址类型:

外部 IP 地址

外部 IP 地址会通告给连接到组织的外部网络。具有外部 IP 地址的资源(例如负载均衡器和 NAT)可以与外部网络通信。借助 GDC,您可以将专用或公共 IP 地址用作外部地址。通过以下方式为资源提供外部 IPv4 地址:

  • 自备外部 IP 地址 (BYOIP):您为组织提供这些外部 IP 地址。BYOIP 外部 IP 地址可以与其他组织重叠,只要它们不连接到同一外部网络即可。
  • IO 提供的外部 IP 地址:组织在连接到外部网络时,可以使用基础架构运营商群组提供的外部 IP 地址。基础架构运维人员群组是该网络连接的提供方。
内部 IP 地址

内部 IP 地址无法直接从 GDC 外部访问,并且不可公开路由。内部 IP 地址是 VPC 网络、使用 VPC 网络对等互连连接的 VPC 网络或使用 Cloud VPN 连接到 VPC 网络的本地网络的本地 IP 地址。具有内部 IP 地址的资源会与其他资源通信,就像它们都位于同一专用网络上一样。

任播 IP 地址

任播 IP 地址是一种特殊类型的外部地址,其范围始终限定为整个 GDC 领域。GDC 利用任播 IP 地址和边界网关协议 (BGP) 将流量路由到最近或性能最佳的可用区。每个跨两个或更多可用区运行的全球第 4 层服务都会从任播子网(外部子网)接收任播 IP 地址。每个可用区都会通告相同的任播 IP 地址,但您的网络会根据其路由规则选择最佳地址。如果某个可用区发生故障,它会撤回其 IP 地址,并且您的网络会自动将流量重新路由到另一个可用区。即使在服务中断期间,这种自动路由也能提供无缝连接。

专用 IP 地址

专用 IP 地址是无法在互联网上路由的地址。如需查看专用 IPv4 范围的列表,请参阅有效 IPv4 范围表中的专用 IP 地址范围条目。

公共 IP 地址

公共 IP 地址是可通过互联网路由的地址。在 GDC 中,外部 IP 地址可以是公共地址,也可以是专用地址。在 VPC 网络中配置子网的主要 IPv4 地址范围时,您还可以使用公共 IPv4 地址作为内部地址。这些地址称为以非公开方式使用的公共 IP 地址。

IPv4 地址选择

GDC Universe 中的每个网络都有一组有效、禁止和不可用的 IPv4 地址,您在分配 IP 地址时必须考虑这些地址。

默认 VPC 和数据网络段不支持 IPv6 地址范围。请与您的基础设施运营商群组联系,了解其他网络中可能的 IPv6 范围。

有效的 IPv4 范围

下表介绍了有效范围。

范围 说明
专用 IPv4 地址范围
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

专用 IP 地址 RFC 1918

如需了解如何使用 172.17.0.0/16,请参阅其他注意事项。

100.64.0.0/10 共享地址空间 RFC 6598
192.0.0.0/24 IETF 协议分配 RFC 6890
192.0.2.0/24 (TEST-NET-1)
198.51.100.0/24 (TEST-NET-2)
203.0.113.0/24 (TEST-NET-3)
文档 RFC 5737
192.88.99.0/24 IPv6 到 IPv4 中继(已弃用)RFC 7526
198.18.0.0/15 基准测试 RFC 2544
240.0.0.0/4

如 RFC 5735 和 RFC 1112 中所述,预留以供将来使用(E 类)

某些操作系统不支持使用此范围,因此请确认您的操作系统支持此范围,然后再创建使用此范围的子网。

以不公开方式使用的公共 IP 地址范围
以非公开方式使用的公共 IPv4 地址 以非公开方式使用的公共 IPv4 地址具有以下特征:
  • 是通常可在互联网上路由但在 VPC 网络中以不公开方式使用的 IPv4 地址。
  • 不得属于被禁的子网范围。

GDC 网闸隔离配置不假设连接到互联网。因此,GDC 网闸隔离配置会将所有公共 IP 地址范围通告为贵组织的专用 IP 地址范围。

如果您导入的自备 IP (BYOIP) 地址是公共 IP 地址范围,则必须验证它们不会在任何外部网络中导致网络问题。您的 BYOIP 地址不得与组织中的其他子网重叠。

禁止的 IPv4 子网

禁止的子网范围包括通常预留的 RFC 范围以及特定 GDC 领域中的任何全局预留子网,如下表所述。这些范围不能用于子网。

范围 说明
GDC 基础设施范围 GDC 系统使用的全局预留 CIDR 块。如果未在客户调查问卷 (CIQ) 的 zone-infra-cidr 字段中指定此范围,GDC 会默认使用 172.16.0.0/12 作为 GDC 基础设施范围。
Universe 专用范围 基础架构运营商组预留的其他范围。
0.0.0.0/8 当前(本地)网络 RFC 1122
127.0.0.0/8 本地主机 RFC 1122
169.254.0.0/16 链路本地 RFC 3927
224.0.0.0/4 多播(D 类)RFC 5771
255.255.255.255/32 受限广播目标地址 RFC 8190 和 RFC 919

IPv4 子网中不可用的地址

GDC 使用每个子网中的前两个和最后两个 IPv4 地址来托管子网。

不可用的 IPv4 地址 说明 示例
网络地址 主要 IPv4 范围内的第一个地址。 10.1.2.0/24 范围内的 10.1.2.0
默认网关地址 主要 IPv4 范围内的第二个地址。 10.1.2.0/24 范围内的 10.1.2.1
倒数第二个地址 主要 IPv4 范围内的倒数第二个地址。

此范围由 Google Cloud 预留,将来可能会使用。

10.1.2.0/24 范围内的 10.1.2.254
广播地址 主要 IPv4 范围内的最后一个地址。 10.1.2.0/24 范围内的 10.1.2.255

其他注意事项

某些 Google 和第三方产品使用 172.17.0.0/16 在客机操作系统中进行路由。例如,默认 Docker 网桥网络会使用此范围。如果您依赖的产品使用 172.17.0.0/16,请勿将其用作任何子网 IPv4 地址范围。

限制

这些限制适用于 GDC 中的 VPC 网络子网和外部网段子网:

  • 所有子网都必须是唯一的有效 CIDR 块。
  • 创建子网后,便无法再对其进行扩容、替换或缩容。
  • GDC 仅支持在默认 VPC 和数据网段中创建的子网的 IPv4 范围。请与您的基础设施运营商群组联系,了解 GDC 环境中其他网络的 IPv6 范围可能性。
  • GDC 不会限制可创建的 CIDR 块的大小。但是,对于大多数大于 /8 的 IP 地址范围,额外的验证会阻止您创建这么大的子网。例如,子网不能与被禁的子网重叠。为了尽量降低选择无效子网的可能性,我们建议您将最大子网大小限制为 /8。
  • 您不能创建与任何禁止的子网、同一 VPC 网络中的任何其他子网、连接的外部网段中的任何子网或对等互连网络中的任何子网重叠的子网。您必须与基础架构运营商组合作,确保在这些场景中不会创建重叠的子网。

  • GDC 会为子网创建相应的路由。VPC 网络子网在组织的虚拟网络栈中创建了路由,而外部网段子网在外部对等互连网络的路由表中创建了路由。

  • 如果您已使用代管式 VPN 或共享或专用互连将 VPC 网络连接到其他网络,请验证子网是否与本地 IP 寻址冲突。

  • 子网不能与禁止的范围匹配,也不能比禁止的范围更小或更大。例如,169.0.0.0/8 不是有效的子网,因为它与本地链路范围 169.254.0.0/16 (RFC 3927) 重叠,后者属于受限范围。

  • 子网不得跨越 RFC 范围(如有效的 IPv4 范围中所述)和以非公开方式使用的公共 IP 地址范围。例如,172.0.0.0/10 不是有效的子网,因为它同时包含 172.16.0.0/12 专用 IP 地址范围和公共 IP 地址。

  • 子网不得跨多个 RFC 范围。例如,192.0.0.0/8 不是有效的子网,因为它同时包含 192.168.0.0/16 (RFC 1918) 和 192.0.0.0/24 (RFC 6890)。不过,您可以创建两个子网,一个使用 192.168.0.0/16,另一个使用 192.0.0.0/24。

后续步骤