GDC 中的子网和 IP 地址

此概览页面介绍了 Google Distributed Cloud (GDC) 气隙环境中的 IP 地址运行模式。IP 地址分为子网,以提供可分配给服务的可管理网段。您可以定义具有特定 IP 地址范围的子网,也可以将其配置为动态分配。

本页面适用于平台管理员组中的网络管理员和应用运营者组中的应用开发者,他们负责管理 GDC 环境中服务的网络流量。如需了解详情,请参阅 GDC 气隙环境受众群体文档

GDC 中的网络

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

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

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

VPC 中的子网可从 GDC 网络内部访问,但无法从 GDC 外部访问。VPC 子网可用于在组织内分配内部 IP 地址。网络段子网会向与组织连接的外部网络公开,让您可以提供可供组织外部网络使用的外部 IP 地址

VPC 网络

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

您的 GDC 宇宙中有两个可用的 VPC 网络:

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

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

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

外部网段

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

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

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

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

子网层次结构

子网按类型分为以下几类:

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

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

此示例图展示了不同子网类型之间的连接方式:

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

借助这种子网分层结构,您可以高效地在依赖于网络中 IP 地址的工作负载和服务之间委派和组织网络。

全球子网和可用区级子网

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

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

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

全局子网

您必须创建一个全局子网,才能将托管在全局 API 服务器中的根子网的 IP 地址分配给 GDC 宇宙中的一个或多个地区。

全局子网是在全局 API 服务器中使用 ipam.global.gdc.goog/v1 API 组创建的,并且包含可选字段(例如 zonepropagationStrategy)来定义它们与特定可用区的互动。

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

可用区级子网

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

为了使跨可用区进行 VPC 到 VPC 通信能够正常运行,每个可用区都必须使用不重叠的子网。

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

子网标签

标签分为以下四种:

  • ipam.gdc.goog/vpcipam.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 服务器中。

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

子网组

子网组是一组具有相同子网组标签(例如 *ipam.gdc.goog/subnet-group: subnetgroup1)的子网。将子网整理成组可带来以下好处:

  1. 子网组可简化由同一实体拥有或用于同一用途的 IP 资源的扩缩。子网本身无法向上扩展,但子网组可以通过向其附加新子网来向上扩展。用户可以将子网组作为其 IP 资源进行引用,并利用其便捷的扩缩功能。
  2. 创建子子网时,用户可以引用子网组作为父子网,而不是单个子网。通过以这种方式使用子网组,用户无需自行查找具有可用 IP 空间的父子网:IPAM 会自动在子网组中查找具有足够可用 IP 空间的子网作为其父子网。
  3. 当某个用途或实体的 IP 资源用尽时,如果以子网组为父项,子网中的错误信息会更加直观,从而减少逐个检查所有子网的麻烦。

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

创建和扩大子网组

没有适用于子网组的 API 或对象。相反,子网组由子网组标签标识。如需创建子网组或向子网组添加子网,请向现有子网添加子网组标签,或创建带有子网组标签的新子网。

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

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

apiVersion: ipam.gdc.goog/v1
kind: Subnet
metadata:
  ...
  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
  ...
spec:
  ipv4Request:
    cidr: 10.99.0.0/16
  parentReference:
    name: default-vpc-root-cidr
    namespace: platform
    type: SingleSubnet
  type: Branch

创建和扩大子网组的规则

  1. 子网组是按命名空间范围定义的。具有相同子网组标签但位于两个不同命名空间中的子网将被视为属于两个不同的子网组。
  2. 子网不能是同一组中另一个子网的后代。
  3. 同一组中的子网必须属于同一 VPC 或网段。
  4. 一个子网只能附加到一个子网组。

使用子网组作为父级

创建子网时,除了使用单个子网作为父子网之外,用户还可以引用子网组作为父子网。如需将子网组作为父组进行引用,您需要:

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

从子网组创建子级子网后,IPAM 将根据子级子网的请求和父级子网组中子网的可用性,从子网组中分配 CIDR。如果找到合适的父子网,子网将从父子网获取其 CIDR,并且子网状态中的父子网引用将更新。

在以下示例中,子网从 default-vpc-zone1-group 请求 CIDR,并在状态中获得分配的父级 platform/default-vpc-zone1-root-cidr

apiVersion: ipam.gdc.goog/v1
kind: Subnet
metadata:
...
  labels:
    ipam.gdc.goog/vpc: default-vpc
  name: default-vpc-default-node-subnet
  namespace: platform
...
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
...

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

  1. 如果将子网组作为父级进行引用,则子子网的创建者必须对子网组中的所有子网拥有“使用”权限。
  2. 子子网必须与子网组位于同一 VPC 或网段中。

静态和动态 CIDR 配置

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

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

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

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

GDC 中的 IP 地址

虚拟机和负载平衡器等资源在 GDC 中具有 IP 地址。借助这些 IP 地址,GDC 资源可以与组织内的其他资源通信,也可以与连接到组织的外部网络通信。GDC 世界中提供以下 IP 地址类型:

外部 IP 地址

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

  • 自备外部 IP 地址 (BYOIP):您为组织提供这些外部 IP 地址。只要 BYOIP 外部 IP 地址不连接到同一外部网络,就可以与其他组织的外部 IP 地址重叠。
  • IO 提供的外部 IP 地址:组织在连接到外部网络时可以使用基础设施运营商组提供的外部 IP 地址。基础设施运营商组是相应网络的连接提供商。
内部 IP 地址

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

任播 IP 地址

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

专用 IP 地址

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

公共 IP 地址

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

IPv4 用量和限制

GDC 宇宙中的每个网络都有一些 IPv4 地址范围使用限制,您在分配 IP 地址时必须考虑这些限制。默认 VPC 和数据网络段不支持 IPv6 地址范围。请与您的基础设施运营团队联系,了解其他网络中 IPv6 地址范围的可能性。

所有 IPv4 子网的限制

这些限制适用于 VPC 网络子网和外部网段子网。

  • 所有子网都必须是唯一的有效 CIDR 地址块
  • 创建子网后,无法扩大、替换或缩小子网。
  • GDC 不会强制限制可创建的 CIDR 的大小。不过,对于大多数大于 /8 的 IP 地址范围,额外的验证会阻止您创建这么大的子网。例如,子网不能与被禁的子网重叠。为了尽量降低选择无效子网的可能性,我们建议您将最大子网大小限制为 /8
  • 您无法创建与以下范围重叠的子网:任何禁止的子网、同一 VPC 网络中的任何其他子网、所连接的外部网段中的任何子网,或者对等互连网络中的任何子网。您必须与基础架构运维人员群组协作,确保在这些场景中不会创建重叠的子网。

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

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

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

  • 子网不得跨越 有效的 IPv4 范围中所述的 RFC 范围和以非公开方式使用的公共 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

有效的 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 5735RFC 1112 中所述,预留以供将来使用(E 类)

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

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

经过网闸隔离的 GDC 不会假设连接到互联网。因此,GDC 空气隔离环境会通告任何公共 IP 地址范围,就好像这些范围是您组织的专用范围一样。

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

禁止的 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 8190RFC 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 地址范围。

子网的 IAM 权限

Google Distributed Cloud 网闸隔离配置支持用于管理子网的丰富 IAM 权限集。

  • 子网组织管理员(全局):管理组织内的多个可用区子网。请让您的组织 IAM 管理员为您授予 Subnet Organization Admin (subnet-org-admin) 集群角色。
  • 子网组织管理员:管理组织内的可用区子网。请让您的组织 IAM 管理员为您授予 Subnet Organization Admin (subnet-org-admin) 集群角色。
  • 子网项目管理员(全局):管理项目中的多个地区子网。请让您的组织 IAM 管理员为您授予 Subnet Project Admin (subnet-project-admin) 角色。
  • 子网项目管理员:管理项目内的可用区子网。请让您的组织 IAM 管理员为您授予 Subnet Project Admin (subnet-project-admin) 角色。
    • 此角色有权读取项目命名空间中的所有子网,以及在项目命名空间中创建/更新/删除大多数子网。不过,此角色不授予创建/更新/删除根类型子网 (subnet.Spec.Type == Root) 的权限
  • 子网项目操作员:管理项目中的叶类型自动分配子网。请让您的组织 IAM 管理员为您授予 Subnet Project Operator (subnet-project-operator) 角色。
    • 此角色有权读取项目 ns 中的所有子网,但只能在项目命名空间中创建/更新/删除自动分配的叶子子网。此角色不授予创建/更新/删除以下子网的权限:
      • 根类型或分支类型子网(subnet.Spec.Type == Root || subnet.Spec.Type == Branch)
      • 网络子网 (subnet.Spec.NetworkSpec != nil)
      • 具有专用 CIDR 的子网(subnet.Spec.Ipv4Request.CIDR != nil || subnet.Spec.Ipv6Request.CIDR != nil)
  • Subnet Platform Viewer:获取 platform 命名空间中的子网。请让您的组织 IAM 管理员为您授予 Subnet Platform Viewer (subnet-platform-viewer) 角色。
  • 如需使用平台命名空间中的共享子网作为父级来在项目内分配子网,请让组织 IAM 管理员为您授予 shared-subnet-user 角色。
  • 如需授予平台命名空间中的专用子网以用作在项目内分配子网的父级,subnet-org-admin 必须创建或更新子网,并在其中设置注解 "ipam.gdc.goog/subnet-delegation-role": auto。然后,让组织 IAM 管理员为用户授予 <subnetName>-user 角色。
  • 如需在平台命名空间内启用子网组以进行项目内部子网分配,subnet-org-admin 必须创建或更新组中的所有子网。对于每个子网,都需要设置注解 "ipam.gdc.goog/subnet-delegation-role": auto。然后,请组织 IAM 管理员为群组中的每个子网授予 <subnetName>-user 角色。

后续步骤