使用 VPC 网络

本页面介绍了如何创建、修改和删除 VPC 网络。本页面假定您已了解 VPC 网络概览中所述的 VPC 网络特征。网络和子网在 Google Cloud 中是不同的资源

创建网络

您可以选择创建自动模式 VPC 网络或自定义模式 VPC 网络。 您创建的每个新网络在同一项目内必须具有唯一的名称。

创建自动模式网络

在您创建自动模式网络时,此网络会自动在每个 Google Cloud 地区创建一个子网。在新区域可用后,这些区域中的新子网将自动添加到自动模式网络中。自动创建的子网的 IP 范围来自预定范围集。所有自动模式网络都使用同一组 IP 地址范围。

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络”页面。
    转到“VPC 网络”页面
  2. 点击创建 VPC 网络
  3. 输入网络的名称
  4. 子网创建模式选择自动
  5. 防火墙规则部分中,选择一个或多个预定义的防火墙规则,用于处理与虚拟机之间连接的常见使用场景。如果您不想使用防火墙规则,则无需选择任何规则。您可以在创建网络之后创建自己的防火墙规则
  6. 为 VPC 网络选择动态路由模式

    如需了解详情,请参阅动态路由模式。稍后,您可以更改动态路由模式

  7. 最大传输单元 (MTU):选择网络的 MTU 是 1460(默认值)还是 1500。在将 MTU 设置为 1500 之前,请查看概念指南中的 MTU 信息

  8. 点击创建

gcloud

使用以下 gcloud 命令创建自动模式网络:


gcloud compute networks create NETWORK \
    --subnet-mode=auto \
    --bgp-routing-mode=DYNAMIC_ROUTING_MODE \
    --mtu=MTU

请将占位符替换为有效值:

  • NETWORK 是 VPC 网络的名称。
  • DYNAMIC_ROUTING_MODE 可以是 globalregional,以控制网络中 Cloud Router 路由器的行为。如需了解详情,请参阅动态路由模式
  • MTU 是该网络的最大传输单元。MTU 可以是 1460(默认值)或 1500。在将 MTU 设置为 1500 之前,请查看概念指南中的 MTU 信息

API

创建自动模式网络。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks
{
  "autoCreateSubnetworks": true,
  "name": "auto-network1",
  "mtu": MTU
}

替换以下内容:

  • PROJECT_ID 是创建 VPC 网络的项目的 ID。
  • MTU 是该网络的最大传输单元。MTU 可以是 1460(默认值)或 1500。在将 MTU 设置为 1500 之前,请查看概念指南中的 MTU 信息

如需指定 VPC 网络的动态路由模式,请使用 routingConfig 字段:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks
{
  "routingConfig": {
    "routingMode": "DYNAMIC_ROUTING_MODE"
  },
  "autoCreateSubnetworks": true,
  "name": "NETWORK",
  "mtu": MTU
}

请将占位符替换为有效值:

  • PROJECT_ID 是创建 VPC 网络的项目的 ID。
  • NETWORK 是 VPC 网络的名称。
  • DYNAMIC_ROUTING_MODE 可以是 globalregional,用于控制网络中 Cloud Router 路由器的路由通告行为。如需了解详情,请参阅动态路由模式
  • MTU 是该网络的最大传输单元。MTU 可以是 1460(默认值)或 1500。在将 MTU 设置为 1500 之前,请查看概念指南中的 MTU 信息

如需了解详情,请参阅 networks.insert 方法。

创建自定义模式网络

对于自定义模式 VPC 网络,创建一个网络,随后在区域内创建所需子网。您不必立即为所有地区指定子网,甚至根本不必指定子网,但不能在没有定义子网的地区中创建实例。

您可以在创建网络时创建子网,也可以稍后添加子网

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络”页面。
    转到“VPC 网络”页面
  2. 点击创建 VPC 网络
  3. 输入网络的名称
  4. 子网创建模式选择自定义
  5. 新子网部分,为子网指定以下配置参数:

    1. 为子网提供名称
    2. 选择区域
    3. 输入 IP 地址范围。这是子网的主要 IP 地址范围

      如果您选择的范围不是 RFC 1918 地址,请确认该范围与现有配置不冲突。如需了解详情,请参阅子网范围

    4. 要为子网定义次要范围,请点击创建次要 IP 范围

      如果您选择的范围不是 RFC 1918 地址,请确认该范围与现有配置不冲突。如需了解详情,请参阅子网范围

    5. 专用 Google 访问通道:选择是在创建子网时为它启用专用 Google 访问通道,还是稍后通过修改来启用。

    6. 流日志:选择是在创建子网时为它启用 VPC 流日志,还是稍后通过修改来启用。

    7. 点击完成

  6. 如需添加更多子网,请点击添加子网,然后重复上述步骤。此外,您还可以在创建网络后向网络添加更多子网。

  7. 为 VPC 网络选择动态路由模式

    如需了解详情,请参阅动态路由模式。稍后,您可以更改动态路由模式

  8. 最大传输单元 (MTU):选择网络的 MTU 是 1460(默认值)还是 1500。在将 MTU 设置为 1500 之前,请查看概念指南中的 MTU 信息

  9. 点击创建

gcloud

使用以下 gcloud 命令创建新的自定义模式网络。创建网络后,按照添加子网的相关说明将子网添加到网络中。

gcloud compute networks create NETWORK \
    --subnet-mode=custom \
    --bgp-routing-mode=DYNAMIC_ROUTING_MODE \
    --mtu=MTU

请将占位符替换为有效值:

  • NETWORK 是 VPC 网络的名称。
  • DYNAMIC_ROUTING_MODE 可以是 globalregional,用于控制网络中 Cloud Router 路由器的路由通告行为。如需了解详情,请参阅动态路由模式
  • MTU 是该网络的最大传输单元。MTU 可以是 1460(默认值)或 1500。在将 MTU 设置为 1500 之前,请查看概念指南中的 MTU 信息

API

创建自定义模式网络。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks
{
  "autoCreateSubnetworks": false,
  "name": "NETWORK",
  "mtu": MTU,
  "routingConfig": {
    "routingMode": "DYNAMIC_ROUTING_MODE"
  }
}

将下列占位符替换为您环境中的值:

  • PROJECT_ID 是创建 VPC 网络的项目的 ID。
  • NETWORK 是 VPC 网络的名称。
  • DYNAMIC_ROUTING_MODE 可以是 globalregional,用于控制网络中 Cloud Router 路由器的路由通告行为。如需了解详情,请参阅动态路由模式
  • MTU 是该网络的最大传输单元。MTU 可以是 1460(默认值)或 1500。在将 MTU 设置为 1500 之前,请查看概念指南中的 MTU 信息

如需了解详情,请参阅 networks.insert 方法。

Terraform

您可以使用 Terraform 模块创建一个具有多个子网的自定义模式 VPC 网络。

例如,您可以将此地址块添加到 Terraform 配置中:

module "vpc" {
  source  = "terraform-google-modules/network/google"
  version = "~> 2.5"

  project_id   = "PROJECT_ID"
  network_name = "NETWORK_NAME"
  routing_mode = "ROUTING_MODE"

  subnets = [
    {
        subnet_name   = "SUBNET_NAME"
        subnet_ip     = "SUBNET_RANGE"
        subnet_region = "SUBNET_REGION"
    }
]
}

替换以下内容:

  • PROJECT_ID 是创建 VPC 网络的项目的 ID。
  • NETWORK_NAME 是 VPC 网络的名称。
  • ROUTING_MODE 可以是 globalregional,用于控制网络中 Cloud Router 路由器的路由通告行为。如需了解详情,请参阅动态路由模式
  • SUBNET_NAME 是新子网的名称。
  • SUBNET_RANGE 是子网的主要 IP 地址范围。如需了解详情,请参阅子网范围
  • SUBNET_REGION 是子网所在的地区。

关于防火墙规则

创建网络后,创建防火墙规则以允许或拒绝网络中资源之间的流量,例如虚拟机实例之间的通信。您还可以使用防火墙规则来控制哪些流量从 VPC 网络流向互联网或哪些流量从互联网流向 VPC 网络。

查看网络

查看项目中的 VPC 网络和旧式网络。对于 VPC 网络,您可以查看有关其子网及其子网创建模式的信息。

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络”页面。
    转到“VPC 网络”页面

    控制台会列出所有 VPC 网络和旧式网络。

  2. 选择一个 VPC 网络以查看其详细信息,例如该 VPC 网络的对等互连连接和子网。

gcloud

  1. 列出项目中的网络,如以下示例所示。

    gcloud compute networks list
    

    该命令会列出所有 VPC 网络和旧式网络。旧式网络显示子网创建模式为 LEGACY,而 VPC 网络显示 AUTOCUSTOM

    NAME             SUBNET_MODE  BGP_ROUTING_MODE  IPV4_RANGE     GATEWAY_IPV4
    custom-network   CUSTOM       REGIONAL
    default          AUTO         REGIONAL
    legacy-network1  LEGACY       REGIONAL          10.240.0.0/16  10.240.0.1
    
  2. 描述具体网络以查看其详细信息,例如该网络的对等互连连接和子网。

    gcloud compute networks describe NETWORK
    

API

  1. 列出项目中的所有网络。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks
    

    PROJECT_ID 替换为包含所要列出 VPC 网络的项目 ID。

    如需了解详情,请参阅 networks.list 方法。

  2. 描述具体网络以查看其详细信息。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK
    

    请将占位符替换为有效值:

    • PROJECT_ID 是 VPC 网络所在项目的 ID。
    • NETWORK 是要描述的 VPC 网络的名称。

    如需了解详情,请参阅 networks.get 方法。

处理子网

您在创建或修改子网时必须遵循以下规则:

  • 在一个项目中,子网不能与 VPC 网络同名,除非它是该网络的成员。在一个项目中,同一区域中的子网必须具有唯一名称。例如,名为 production 的网络可以具有多个同样名为 production 的子网,前提是每个子网都位于唯一区域中。

  • 创建子网后,就无法更改子网的名称或区域。 不过,只要没有任何资源在使用子网,您就可以删除和替换它。

  • 每个子网都必须有一个主要范围,而别名 IP 地址可以有一个或多个次要范围(可选)。每个网络的限制说明了您可以为每个子网定义的次要范围的数量上限。主要和次要 IP 范围必须是有效范围

    • 在 VPC 网络中,所有主要和次要 IP 范围必须是唯一的,但它们需要是连续的。例如,一个子网的主要范围可以是 10.0.0.0/24,而同一网络中另一子网的主要范围可以是 192.168.0.0/16

    • 创建子网后,子网的主要 IP 地址范围可以扩展,但不可替换或缩小。

    • 只有在没有任何实例使用子网的次要 IP 地址范围时,您才可以移除和替换该范围。

    • 最小主要或次要范围大小是八个 IP 地址。换句话说,您可以使用的最长子网掩码是 /29

  • 子网的主要和次要范围不得与以下范围重叠:任何分配范围、同一网络中其他子网的任何主要或次要范围,或者对等互连网络中子网的任何 IP 地址范围。

  • Google Cloud 会为主要和次要 IP 地址范围创建相应的子网路由。根据定义,子网路由以及子网 IP 地址范围必须具有最具体的 IP 地址范围。

    • 如果您已通过 Cloud VPN专用互连或合作伙伴互连将 VPC 网络连接到其他网络,则主要和次要范围不得与本地 IP 地址范围发生冲突。

    • 在通过 VPC 网络对等互连进行连接的 VPC 网络之间,所有子网的 IP 地址范围都必须是唯一的。

    • 子网 IP 地址范围不得与静态路由的目的地发生冲突。

    • 避免将 10.128.0.0/9 块中的 IP 地址用于子网的主要或次要 IP 地址范围。在自动模式网络中自动创建的子网会使用此块中的 IP 地址。如果您使用 10.128.0.0/9 块中的 IP 地址,则将无法使用 VPC 对等互连或通过 Cloud VPN 隧道将网络连接到自动模式 VPC 网络。

列出子网

您可以看到一个项目中存在的所有子网。

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络”页面。
    转到“VPC 网络”页面
    此页面会显示所有 VPC 网络中的子网。
  2. 点击网络名称,然后点击 VPC 网络详情页面上的子网标签页,以便仅查看此网络的子网,而不是所有网络的子网。

gcloud

您可以列出项目中所有网络中的所有子网,也可以仅显示特定网络或区域的子网。以下列表显示了示例命令。

  • 使用以下命令可列出所有地区的所有 VPC 网络中的所有子网:

    gcloud compute networks subnets list
    
  • 使用以下命令可列出特定 VPC 网络中的所有子网,请将 NETWORK 替换为相应网络的名称:

    gcloud compute networks subnets list \
       --network=NETWORK
    
  • 使用以下命令可列出特定区域中的所有子网,请将 REGION 替换为地区名称:

    gcloud compute networks subnets list \
       --filter="region:( REGION … )"
    

API

列出项目中的所有子网。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/subnetworks

PROJECT_ID 替换为包含所要列出子网的项目的 ID。

如需了解详情,请参阅 subnetworks.aggregatedList 方法。

描述子网

您可以按照本部分中的步骤查看现有子网的详细信息,例如子网的主要 IP 范围、任何次要 IP 范围及其区域。

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络”页面。
    转到“VPC 网络”页面
    项目中的所有网络和子网都以层次视图呈现,其中子网显示为网络中的条目。
  2. 如需关注特定网络的子网,请点击网络的名称。在网络的 VPC 网络详情页面上,点击子网标签页中具体子网的名称,以查看其“子网详情”页面。

gcloud

  1. 列出子网可确定项目中现有子网的名称和地区。

  2. 使用以下 gcloud 命令并将 SUBNETREGION 分别替换为子网的名称和地区,用于描述子网。

    gcloud compute networks subnets describe SUBNET \
    --region=REGION
    

API

  1. 列出特定区域中的子网以查找子网的名称。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
    

    请将占位符替换为有效值:

    • PROJECT_ID 是包含所要列出子网的项目的 ID。
    • REGION 是包含所要列出子网的 Google Cloud 地区的名称。

    如需了解详情,请参阅 subnetworks.list 方法。

  2. 描述相应子网以查看其详细信息。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    请将占位符替换为有效值:

    • PROJECT_ID 是包含所要描述子网的项目的 ID。
    • REGION 是包含所要描述子网的 Google Cloud 地区的名称。
    • SUBNET 是所要描述子网的名称。

    如需了解详情,请参阅 subnetworks.get 方法。

添加子网

在创建子网时,请根据子网规则设置名称、地区和至少一个主要 IP 地址范围。

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络”页面。
    转到“VPC 网络”页面
  2. 点击某个 VPC 网络的名称以显示其“VPC 网络详情”页面。
  3. 点击添加子网。在显示的面板中:

    1. 提供名称
    2. 选择区域
    3. 输入 IP 地址范围。这是子网的主要 IP 地址范围

      如果您选择的范围不是 RFC 1918 地址,请确认该范围与现有配置不冲突。如需了解详情,请参阅子网范围

    4. 要为子网定义次要范围,请点击创建次要 IP 范围

      如果您选择的范围不是 RFC 1918 地址,请确认该范围与现有配置不冲突。如需了解详情,请参阅子网范围

    5. 专用 Google 访问通道:您可以在创建子网时为它启用专用 Google 访问通道,也可以稍后通过修改来启用。

    6. 流日志:您可以在创建子网时为它启用 VPC 流日志,也可以稍后通过修改来启用。

    7. 点击添加

gcloud

以下 gcloud 命令会在给定网络中创建新子网。

gcloud compute networks subnets create SUBNET \
    --network=NETWORK \
    --range=PRIMARY_RANGE \
    --region=REGION

请将占位符替换为有效值:

  • SUBNET 是新子网的名称。
  • NETWORK 是将要包含新子网的 VPC 网络的名称。
  • PRIMARY_RANGE 是新子网的主要 IP 地址范围(采用 CIDR 表示法)。如需了解详情,请参阅子网范围
  • REGION 是将在其中创建新子网的 Google Cloud 地区。

您可以使用以下可选标志修改以上命令:

  • --secondary-range=SECONDARY_RANGE_NAME=SECONDARY_RANGE:将 SECONDARY_RANGE_NAME 替换为次要范围的名称,将 SECONDARY_RANGE 替换为采用 CIDR 表示法的次要范围。每个网络的限制说明了您可以为每个子网定义的次要范围的数量上限。
  • --enable-flow-logs:创建子网时在子网中启用 VPC 流日志
  • --enable-private-ip-google-access:创建子网时在子网中启用专用 Google 访问通道
  • --purpose:可让您为内部 HTTP(S) 负载平衡创建代理专用子网。
  • --role:仅适用于内部 HTTP(S) 负载平衡,允许您为代理专用子网指定角色(活跃或备用)。

API

在给定的 VPC 网络中创建子网。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
{
  "ipCidrRange": "IP_RANGE",
  "network": "NETWORK_URL",
  "name": "SUBNET"
}

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要修改 VPC 网络的项目的 ID。
  • REGION 是要添加子网所在的 Google Cloud 地区的名称。
  • IP_RANGE 是子网的主要 IP 地址范围。如需了解详情,请参阅子网范围
  • NETWORK_URL 是所要添加子网的 VPC 网络的网址。
  • SUBNET 是子网的名称。

如需了解详情,请参阅 subnetworks.insert 方法。

删除子网

使用以下说明可删除手动创建的子网。在删除子网之前,您必须先删除使用该子网的所有资源。例如,您需要删除使用该子网的虚拟机、预留的内部 IP 地址、内部转发规则以及 Cloud NAT 网关。

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络”页面。
    转到“VPC 网络”页面
    项目中的所有网络和子网都以层次视图呈现,其中子网显示为网络中的条目。
  2. 如需关注特定网络的子网,请点击网络的名称。在网络的 VPC 网络详情页面上,点击子网标签中某一子网的名称,以查看其子网详情页面。
  3. 点击删除子网
  4. 在显示的消息中,点击删除进行确认。

gcloud

使用以下 gcloud 命令删除子网:

gcloud compute networks subnets delete SUBNET \
    --region=REGION

请将占位符替换为有效值:

  • SUBNET 是所要删除子网的名称。
  • REGION 是子网所在的地区。

API

在给定的 VPC 网络中删除子网。

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要删除子网的项目的 ID。
  • REGION 是包含所要描述子网的 Google Cloud 地区的名称。
  • SUBNET 是所要删除子网的名称。

如需了解详情,请参阅 subnetworks.delete 方法。

扩展主要 IP 地址范围

您可以扩展现有子网的主要 IP 范围,方法是修改其子网掩码,然后将前缀长度设置为较小的数字。新的建议子网主要 IP 地址范围必须遵循子网规则

在自动模式网络(或者曾是自动模式网络的自定义模式网络)中扩展自动创建的子网的 IP 地址范围时,您可以使用的最宽泛的前缀(子网掩码)是 /16。比 /16 更宽泛的任何前缀都会与其他自动创建的子网的主要 IP 范围发生冲突。

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络”页面。
    转到“VPC 网络”页面
    项目中的所有网络和子网都以层次视图呈现,其中子网显示为网络中的条目。
  2. 如需关注特定网络的子网,请点击网络的名称。在网络的 VPC 网络详情页面上,点击子网标签中某一子网的名称,以查看其子网详情页面。
  3. 点击修改
  4. IP 地址范围字段中输入一个更宽泛的新 CIDR 块。

    如需了解有效范围,请参阅子网范围

  5. 点击保存

gcloud

使用以下 gcloud 命令扩展子网的主要 IP 范围:

gcloud compute networks subnets expand-ip-range SUBNET \
  --region=REGION \
  --prefix-length=PREFIX_LENGTH

请将占位符替换为有效值:

  • SUBNET 是子网的名称。
  • REGION 是子网所在的地区。
  • PREFIX_LENGTH 是子网掩码大小(以位为单位)。如果主要 IP 范围是 10.1.2.0/24,则可以输入 20,以将子网掩码减少到 20 位,从而将主要 IP 范围更改为 10.1.2.0/20。如需了解有效范围,请参阅子网范围

API

扩展现有子网的主要 IP 地址范围。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET/expandIpCidrRange
{
  "ipCidrRange": "IP_RANGE"
}

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要修改子网的项目的 ID。
  • REGION 是包含所要修改子网的 Google Cloud 地区的名称。
  • SUBNET 是所要修改子网的名称。
  • IP_RANGE 是该子网的扩展的 IP 地址范围。如需了解有效范围,请参阅子网范围

如需了解详情,请参阅 subnetworks.expandIpCidrRange 方法。

修改次要范围

您可以为子网添加次要 IP 范围,也可以移除任何次要范围,前提是没有任何资源在使用该次要范围内的 IP 地址。

gcloud

使用以下 gcloud 命令可以为子网添加新的次要 IP 范围:

gcloud compute networks subnets update SUBNET \
  --region=REGION \
  --add-secondary-ranges=SECONDARY_RANGE_NAME=SECONDARY_RANGE

请将占位符替换为有效值:

  • SUBNET 是子网的名称。
  • REGION 是子网所在的地区。
  • SECONDARY_RANGE_NAME 是次要范围的名称。
  • SECONDARY_RANGE 是次要 IP 地址范围(采用 CIDR 表示法)。如需了解有效范围,请参阅子网范围

使用以下 gcloud 命令可以从子网中移除次要 IP 范围:

gcloud compute networks subnets update SUBNET \
  --region=REGION \
  --remove-secondary-ranges=SECONDARY_RANGE_NAME

请将占位符替换为有效值:

  • SUBNET 是子网的名称。
  • REGION 是子网所在的地区。
  • SECONDARY_RANGE_NAME 是所要移除次要范围的名称。

API

修改现有子网的次要 IP 地址范围。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET
{
  "secondaryIpRanges": [
  {
    "rangeName": "SECONDARY_RANGE_NAME",
    "ipCidrRange": "IP_RANGE"
  },
  {
    "rangeName": "SECONDARY_RANGE_NAME",
    "ipCidrRange": "IP_RANGE"
  }],
  "fingerprint": "SUBNETWORK_FINGERPRINT"
}

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要修改子网的项目的 ID。
  • REGION 是包含所要修改子网的 Google Cloud 地区的名称。
  • SUBNET 是所要修改子网的名称。
  • SECONDARY_RANGE_NAME 是次要 IP 地址范围的名称。
  • IP_RANGE 是该子网的扩展的 IP 地址范围。如需了解有效范围,请参阅子网范围
  • SUBNET_FINGERPRINT 是现有子网的指纹 ID,由您在描述子网时提供。

如需了解详情,请参阅 subnetworks.patch 方法。

修改网络

转换为自定义模式

您可以使用此过程将自动模式网络转换为自定义模式网络。如需了解为什么可能需要执行此过程的背景信息,请查看自动模式网络的注意事项

将自动模式网络转换为自定义模式网络可以保留它自动创建的所有子网和您已添加的任何子网。子网名称和 IP 范围不会更改。

将自动模式网络转换为自定义模式后,您必须检查所有隐式引用在网络处于自动模式时自动创建的任何子网的 API 调用和 gcloud 命令。您需要修改 API 调用和命令,以便它们显式引用子网。对于具有子网指定标志 (--subnet) 的 gcloud 命令,则需要使用该标志来引用自定义模式网络中的子网。

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络”页面。
    转到“VPC 网络”页面
  2. 点击某个 VPC 网络的名称以显示其 VPC 网络详情页面。
  3. 点击修改
  4. 子网创建模式部分,选择自定义
  5. 点击保存

gcloud

使用以下命令可将自动模式网络转换为自定义模式网络,请将 NETWORK 替换为网络的名称。

gcloud compute networks update NETWORK \
    --switch-to-custom-subnet-mode

API

将现有的自动模式网络转换为自定义模式网络。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK/switchToCustomMode

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要转换 VPC 网络的项目的 ID。
  • NETWORK 是所要转换 VPC 网络的名称。

如需了解详情,请参阅 networks.switchToCustomMode 方法。

更改动态路由模式

每个 VPC 网络都有一个关联的动态路由模式,用于控制网络中 Cloud Router 路由器的行为。如需了解每种模式如何影响 Cloud Router 路由器共享路由和应用已知路由的方式,请参阅“VPC 网络概览”页面中的动态路由模式部分。

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络”页面。
    转到“VPC 网络”页面
  2. 点击某个 VPC 网络的名称以显示其 VPC 网络详情页面。
  3. 点击修改
  4. 动态路由模式部分中,选择全局区域
  5. 点击保存

gcloud

使用以下 gcloud 命令可以更改 VPC 网络的动态路由模式:

gcloud compute networks update NETWORK \
    --bgp-routing-mode=DYNAMIC_ROUTING_MODE

请将占位符替换为有效值:

  • NETWORK 是您需要更改其动态路由模式的 VPC 网络的名称。
  • DYNAMIC_ROUTING_MODEglobalregional,具体取决于网络中所有 Cloud Router 路由器的预期行为。

API

更改现有 VPC 网络的动态路由模式。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK
{
  "routingConfig": {
    "routingMode": "ROUTING_MODE"
  }
}

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要修改 VPC 网络的项目的 ID。
  • NETWORK 是所要修改 VPC 网络的名称。
  • ROUTING_MODEGLOBALREGIONAL

如需了解详情,请参阅 subnetworks.patch 方法。

更改网络的 MTU

每个 VPC 网络都有一个 MTU。在虚拟机运行时,不应更改网络 MTU。如果更改,可能会造成在一段时间内虚拟机具有不同的 MTU,因而导致网络连接不可靠。

如需详细了解如何更改网络的 MTU,请参阅最大传输单元

更新网络 MTU 的推荐方法是停止所有正在运行的虚拟机实例、更改网络 MTU,然后启动所有实例。基于 Google 提供的 Linux 映像的虚拟机会自动配置其每个网络接口,以便在虚拟机启动时使用连接的 VPC 网络的 MTU。您必须手动更新 Windows 虚拟机以及基于自定义映像(不依赖于 DHCP 进行网络 MTU 配置)的虚拟机的 MTU。

如需更新 Windows 虚拟机中的接口的 MTU,请在每个实例中运行以下命令:

netsh interface ipv4 set subinterface NAME mtu=1500 store=persistent

控制台

Cloud Console 中不支持更新网络 MTU。请参阅 gcloud 命令行工具或 API 说明。

gcloud

停止所有虚拟机

对于网络中的每个区域,可停止相应区域中的所有虚拟机。

gcloud compute instances stop INSTANCE_NAMES... \
    --zone=ZONE

更新网络 MTU

gcloud compute networks update NETWORK \
    --mtu=MTU

重启虚拟机

对于网络中的每个区域,可启动相应区域中的所有虚拟机。

gcloud compute instances start INSTANCE_NAMES... \
    --zone=ZONE

请将占位符替换为有效值:

  • INSTANCE_NAMES... 是以空格分隔的实例列表。
  • NETWORK 是您需要更改其动态路由模式的 VPC 网络的名称。
  • MTU 是该网络的最大传输单元。MTU 可以是 1460(默认值)或 1500。在将 MTU 设置为 1500 之前,请查看概念指南中的 MTU 信息

API

更改现有 VPC 网络的 MTU。

PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK
{
  "mtu": MTU
}

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要修改 VPC 网络的项目的 ID。
  • NETWORK 是所要修改 VPC 网络的名称。
  • MTU 是该网络的最大传输单元。MTU 可以是 1460(默认值)或 1500。在将 MTU 设置为 1500 之前,请查看概念指南中的 MTU 信息

如需了解详情,请参阅 subnetworks.patch 方法。

或者,如果您不想同时停止网络中的所有虚拟机,则可以一次将一个实例迁移到使用其他 MTU 的新网络。将虚拟机迁移到新网络会避免 VPC 范围的配置更改。

  1. 使用新的 MTU 创建新网络。
  2. 按照在网络之间迁移虚拟机中的指导和说明逐个迁移虚拟机。

删除网络

您可以删除未使用的网络。如需删除某个网络,您必须先删除其所有子网中的所有资源,以及引用该网络的所有资源。引用网络的资源包括 Cloud VPN 网关、Cloud Router 路由器、防火墙规则和自定义静态路由。

控制台

  1. 转到 Google Cloud Console 中的“VPC 网络”页面。
    转到“VPC 网络”页面
  2. 点击某个 VPC 网络的名称以显示其 VPC 网络详情页面。
  3. 点击删除 VPC 网络
  4. 在显示的消息中,点击删除进行确认。

gcloud

使用以下 gcloud 命令删除网络,将 NETWORK 替换为所要移除网络的名称。

gcloud compute networks delete NETWORK

API

删除 VPC 网络以将其从您的项目中移除。

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要删除 VPC 网络的项目 ID。
  • NETWORK 是所要删除 VPC 网络的名称。

如需了解详情,请参阅 subnetworks.delete 方法。

监控 VPC 网络

您可以对进出虚拟机的网络流启用日志记录功能。如需了解相关说明,请参阅使用 VPC 流日志

您可以为防火墙规则启用日志记录功能,以便了解哪些规则允许或阻止了哪些流量。如需了解相关说明,请参阅使用防火墙规则日志记录

迁移虚拟机

在给定项目内,您可以将虚拟机 (VM) 实例从一个网络迁移到另一个网络。如需了解相关说明,请参阅在网络之间迁移虚拟机

后续步骤