在组织的内部虚拟私有云 (VPC) 或默认 VPC 中创建其他子网,以满足内部网络要求。例如,添加 VPC 子网,以确保内部工作负载(例如虚拟机 (VM) 和容器)有足够的 IP 地址。
本页面列出了多项任务,这些任务并非必须按顺序完成:
- **为工作负载创建可用区级分支子网**:此 任务有助于进一步整理可用区现有的内部 IP 地址或将其分配给工作负载。
- 为单个工作负载创建叶子子网: 当您有尚未使用 IP 地址的新工作负载时,此任务非常有用。
- 从全局 IP 地址范围分配可用区级子网: 当您的可用区不再有足够的内部 IP 地址空间时,此任务非常有用。
- **划分根全局子网,而不分配可用区**: 此任务有助于在将内部 IP 地址分配给可用区之前,进一步整理 全局 API 服务器中的内部 IP 地址。
- 添加新的网络根范围全局子网: 当您的默认 VPC 不再有足够的全局 内部 IP 地址空间来分配给可用区时,此任务非常有用。
如需在完成 本页面中的任务之前大致了解子网及其概念,请参阅 子网和 IP 地址。
本文档适用于负责管理组织网络流量的平台管理员和应用运维人员。如需了解详情,请参阅 GDC 气隙文档的受众。
准备工作
如需获得创建子网所需的权限,请让组织 IAM 管理员为您授予 Subnet Org Admin (subnet-org-admin) IAM 角色。此角色不绑定到命名空间。
为工作负载创建可用区级分支子网
如需进一步细分可用区级默认 VPC 中的 IP 地址,您可以从可用区现有的可用区级根子网创建可用区级内部子网。您必须在 platform 命名空间中创建此子网类型。
如果父可用区级根子网没有足够的可用 IP 地址, 请先从全局 IP 地址范围分配另一个可用区级子网 然后再继续。
在终端窗口中,在管理 API 服务器中创建新的可用区级子网:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc name: SUBNET_NAME namespace: platform spec: ipv4Request: prefixLength: CIDR_PREFIX_LENGTH networkSpec: enableGateway: true enableVLANID: false parentReference: name: PARENT_SUBNET_NAME namespace: platform type: Branch EOF替换以下内容:
MANAGEMENT_API_SERVER_KUBECONFIG:管理 API 服务器的 kubeconfig 文件的路径。如需了解详情,请参阅 可用区级管理 API 服务器资源。SUBNET_NAME:新网络子网的名称。CIDR_PREFIX_LENGTH:新子网的前缀长度,例如27。此字段会从父子网中动态分配该大小的下一个可用 IP 地址范围。如果您只关心子网的大小,而不关心其具体的 IP 地址范围,请使用prefixLength字段。如需改为分配特定的 IP 地址范围,请按以下步骤操作:
- 移除
prefixLength: CIDR_PREFIX_LENGTH行。 - 在其位置添加
cidr: "YOUR_CIDR_BLOCK"行,例如cidr: "10.0.10.0/27"。
如果您遵循严格的 IP 计划,并且需要分配精确且可预测的 IP 地址范围,请使用
cidr字段。此范围必须是父子网中的有效可用子网。- 移除
PARENT_SUBNET_NAME:父子网的名称,例如default-vpc-zone0-cidr。父子网通常是默认 VPC 中的可用区级根子网。
如需了解详情,请参阅
Subnet资源的 API 参考文档。您可以继续细分可用区级子网,也可以创建叶子子网,以便 将单个 IP 地址直接分配给 内部工作负载。
为单个工作负载创建叶子子网
如需为工作负载分配单个 IP 地址,您必须创建叶子子网。
此叶子子网必须具有字段值 type: Leaf,并且必须与工作负载资源(例如虚拟机或容器)位于同一项目命名空间中。
您的叶子子网必须配置为 prefixLength 值 32,因为它旨在分配单个 IP 地址。parentReference
值引用先前分配的子网,例如您在
为工作负载创建可用区级分支子网中创建的父可用区级子网。
在终端窗口中,在管理 API 服务器中创建叶子子网:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc name: SUBNET_NAME namespace: PROJECT_NAMESPACE spec: ipv4Request: prefixLength: 32 parentReference: name: PARENT_SUBNET namespace: PARENT_NAMESPACE type: Leaf EOF替换以下内容:
MANAGEMENT_API_SERVER_KUBECONFIG:管理 API 服务器的 kubeconfig 文件的路径。如需了解详情,请参阅 可用区级管理 API 服务器资源。SUBNET_NAME:叶子子网的名称。PROJECT_NAMESPACE:与工作负载所在的项目对应的项目命名空间。PARENT_SUBNET:此叶子子网将从中获取 IP 地址的父子网的名称。PARENT_NAMESPACE:PROJECT_NAMESPACE或platform命名空间。
您的单个 IP 地址现在可供内部工作负载(例如虚拟机和容器)使用。如需详细了解如何为工作负载配置 IP 地址,请参阅 创建具有静态或动态 IP 地址的虚拟机或 为容器工作负载配置内部负载均衡器。
从全局 IP 地址范围分配可用区级子网
如果您的可用区无法从现有的可用区级根子网 IP 地址范围为工作负载提供足够的 IP 地址,您可以从全局 IP 地址根范围分配额外的 IP 地址。
如需从全局 IP 地址范围分配可用区级子网,请在 platform 命名空间中为默认 VPC 网络完成以下步骤:
在终端窗口中,描述默认 VPC 的所有根子网,并检查其可用的 CIDR 地址块:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \ -l ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-range将
GLOBAL_API_SERVER_KUBECONFIG替换为全局 API 服务器的 kubeconfig 文件的路径。如需了解详情,请参阅 全局 API 服务器资源。 标签是常量,必须保持不变。输出类似于以下内容:
Name: default-vpc-root-cidr Namespace: platform Labels: ipam.gdc.goog/allocation-preference=default ipam.gdc.goog/subnet-group=default-vpc-root-group ipam.gdc.goog/usage=network-root-range ipam.gdc.goog/vpc=default-vpc Annotations: <none> API Version: ipam.global.gdc.goog/v1 Kind: Subnet Metadata: Creation Timestamp: 2025-06-18T23:05:38Z Finalizers: global-subnet-finalizer Generation: 1 Resource Version: 439434 UID: 5ed1c51a-b5ee-473e-a185-8e065a87ae8f Spec: ipv4Request: Cidr: 10.252.0.0/14 Propagation Strategy: None Type: Root Status: Children Refs: Name: default-vpc-zone1-root-cidr Namespace: platform Type: SingleSubnet Conditions: Last Transition Time: 2025-06-18T23:05:38Z Message: IP allocation finished successfully Observed Generation: 1 Reason: AllocationSucceeded Status: True Type: Ready ipv4Allocation: Available CIDRs: 10.254.0.0/15 10.253.0.0/16 Cidr: 10.252.0.0/14 Events: <none>请注意
Status.ipv4Allocation.Available CIDRs值。这些值是下一步引用的可用 CIDR 地址块。在上面的输出中,CIDR 范围10.254.0.0/15和10.253.0.0/16可用。您的输出可能会显示多个子网。请注意所有可用的 CIDR 地址块及其来源子网。将上一步中最大的可用 CIDR 地址块与可用区所需的 CIDR 地址块的大小进行比较。如果最大的可用 CIDR 地址块 不够大,无法分配新子网, 请先添加新的网络根范围全局子网 然后再继续。请注意您决定从中获取新子网的 CIDR 地址块的父子网。
例如,如果您需要
/13CIDR 地址块,但可用的 CIDR 仅包含/15和/16,则必须添加新的网络根范围全局子网。如果您需要/15子网,则可以从现有的/15CIDR 地址块分配新的可用区级子网。在全局 API 服务器中创建新子网:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc ipam.gdc.goog/usage: zone-network-root-range name: SUBNET_NAME namespace: platform spec: ipv4Request: prefixLength: CIDR_PREFIX_LENGTH zone: ZONE_NAME propagationStrategy: SingleZone type: Branch parentReference: name: PARENT_SUBNET_NAME namespace: ORG_NAME EOF替换以下内容:
GLOBAL_API_SERVER_KUBECONFIG:全局 API 服务器的 kubeconfig 文件的路径。如需了解详情,请参阅 全局 API 服务器资源。SUBNET_NAME:新子网的名称。CIDR_PREFIX_LENGTH:动态分配的新子网的 CIDR 前缀长度,例如20。如需静态 设置 CIDR,请将prefixLength字段替换为cidr字段, 然后设置 CIDR 地址块,例如10.0.10.0/27。ZONE_NAME:要为其分配 子网的可用区,例如zone1。PARENT_SUBNET_NAME:父子网的名称, 例如default-vpc-root-cidr,或您创建的新网络根范围全局 子网。ORG_NAME:组织的名称。
如需了解详情,请参阅
Subnet资源的 API 参考文档。通过检查子网的状态
Ready类型是否为true,验证该子网是否已准备就绪且可在全局 API 服务器中使用:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \ SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'输出类似于以下内容:
status: conditions: - lastTransitionTime: "2025-06-06T07:28:48Z" message: IP allocation finished successfully observedGeneration: 1 reason: AllocationSucceeded status: "True" type: Ready验证是否在可用区级管理 API 服务器中创建了可用区级子网,并且其状态
Ready类型是否为true:kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet --namespace platform \ SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'将
MANAGEMENT_API_SERVER_KUBECONFIG替换为管理 API 服务器的 kubeconfig 文件的路径。如需了解详情,请参阅 可用区级管理 API 服务器资源。输出类似于以下内容:
status: conditions: - lastTransitionTime: "2025-06-06T07:29:34Z" message: IP allocation finished successfully observedGeneration: 1 reason: AllocationSucceeded status: "True" type: Ready从这个新的可用区级子网中,您可以 创建更多可用区级子子网,也可以 将单个 IP 地址直接分配给 内部工作负载。
划分根全局子网,而不分配可用区
如需进一步划分全局子网,而不将其分配给可用区,请创建全局子网,并在 Subnet 自定义资源中省略传播策略。如果您想继续整理全局根子网中可全局访问的 IP 地址范围,而不将 IP 地址分配给可用区,此方法非常有用。
如需在全局范围内划分全局根子网,请在 platform 命名空间中完成以下步骤:
在终端窗口中,描述默认 VPC 的所有根子网,并检查其可用的 CIDR 地址块:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \ -l ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-range将
GLOBAL_API_SERVER_KUBECONFIG替换为全局 API 服务器的 kubeconfig 文件的路径。如需了解详情,请参阅 全局 API 服务器资源。 标签是常量,必须保持不变。输出类似于以下内容:
Name: default-vpc-root-cidr Namespace: platform Labels: ipam.gdc.goog/allocation-preference=default ipam.gdc.goog/subnet-group=default-vpc-root-group ipam.gdc.goog/usage=network-root-range ipam.gdc.goog/vpc=default-vpc Annotations: <none> API Version: ipam.global.gdc.goog/v1 Kind: Subnet Metadata: Creation Timestamp: 2025-06-18T23:05:38Z Finalizers: global-subnet-finalizer Generation: 1 Resource Version: 439434 UID: 5ed1c51a-b5ee-473e-a185-8e065a87ae8f Spec: ipv4Request: Cidr: 10.252.0.0/14 Propagation Strategy: None Type: Root Status: Children Refs: Name: default-vpc-zone1-root-cidr Namespace: platform Type: SingleSubnet Conditions: Last Transition Time: 2025-06-18T23:05:38Z Message: IP allocation finished successfully Observed Generation: 1 Reason: AllocationSucceeded Status: True Type: Ready ipv4Allocation: Available CIDRs: 10.254.0.0/15 10.253.0.0/16 Cidr: 10.252.0.0/14 Events: <none>请注意
Status.ipv4Allocation.Available CIDRs值。这些值是下一步引用的可用 CIDR 地址块。在上面的输出中,CIDR 范围10.254.0.0/15和10.253.0.0/16可用。您的输出中可能会有多个子网,具体取决于您拥有的根子网数量,因此请注意所有可用的 CIDR 地址块,并注意可用 CIDR 地址块来自哪个子网。将上一步中最大的可用 CIDR 地址块与新全局子网所需的 CIDR 地址块的大小进行比较。如果最大的可用 CIDR 地址块不够大,无法分配新 子网,请先添加新的网络根范围全局子网 然后再继续。请注意您决定从中获取新子网的 CIDR 地址块的父子网。
例如,如果您需要
/13CIDR 地址块,但可用的 CIDR 仅包含/15和/16,则必须创建新的网络根范围全局子网。如果您需要/15子网,则可以从现有的/15CIDR 地址块分配新的全局子网。在全局 API 服务器中创建新子网:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc ipam.gdc.goog/usage: zone-network-root-range name: SUBNET_NAME namespace: platform spec: ipv4Request: prefixLength: CIDR_PREFIX_LENGTH propagationStrategy: None type: Branch parentReference: name: PARENT_SUBNET_NAME namespace: ORG_NAME EOF替换以下内容:
GLOBAL_API_SERVER_KUBECONFIG:全局 API 服务器的 kubeconfig 文件的路径。如需了解详情,请参阅 全局 API 服务器资源。SUBNET_NAME:新子网的名称。CIDR_PREFIX_LENGTH:动态分配的新子网的 CIDR 前缀长度,例如20。如需静态 设置 CIDR,请将prefixLength字段替换为cidr字段, 然后设置 CIDR 地址块,例如10.0.10.0/27。PARENT_SUBNET_NAME:父子网的名称, 例如default-vpc-root-cidr,或您创建的新网络根范围全局 子网。ORG_NAME:组织的名称。
如需了解详情,请参阅全局
Subnet资源的 API 参考文档。通过检查子网的状态
Ready类型是否为true,验证该子网是否已准备就绪且可在全局 API 服务器中使用:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \ SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'输出类似于以下内容:
status: conditions: - lastTransitionTime: "2025-06-06T07:28:48Z" message: IP allocation finished successfully observedGeneration: 1 reason: AllocationSucceeded status: "True" type: Ready
您组织在默认 VPC 中的新全局子网可用。您可以从此新的全局父子网为特定可用区创建子网。
添加新的网络根范围全局子网
带有 ipam.gdc.goog/usage: network-root-range 标签的全局子网托管网络所有可用区的 CIDR。如果 CIDR 用完,您必须在全局 API 服务器中创建新的网络根范围子网。您可以根据需要创建多个根全局子网。
如需创建新的网络根范围子网,请完成以下步骤:
在终端窗口中,在
platform命名空间中为默认 VPC 创建新的网络根范围全局子网:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc ipam.gdc.goog/usage: network-root-range name: SUBNET_NAME namespace: platform spec: ipv4Request: cidr: NEW_CIDR type: Root EOF替换以下内容:
GLOBAL_API_SERVER_KUBECONFIG:全局 API 服务器的 kubeconfig 文件的路径。如需了解详情,请参阅 全局 API 服务器资源。SUBNET_NAME:新子网的名称。NEW_CIDR:子网的新 CIDR。此 CIDR 不能与同一全局 API 服务器中带有ipam.gdc.goog/usage: network-root-range标签的所有现有子网中的任何 CIDR 重叠。
此新的全局根范围子网可以在 全局 API 服务器中细分 或分配给特定可用区。