管理旧版网络

不推荐使用旧版网络,并且无法再创建旧版网络。许多更新的 Google Cloud 功能在旧版网络中不受支持。建议您改为使用 Virtual Private Cloud (VPC) 网络。如需详细了解如何替换旧版网络,请参阅替换旧版网络

本页面介绍如何修改 Google Cloud 旧版网络。本页内容仅适用于您的现有设置使用旧版网络的情况。

限制

旧版网络不支持以下 Google Cloud 功能。要使用这些功能,必须改用 VPC 网络

使用将单个区域转换为 VPC 网络,将单区域旧版网络转换为 VPC 网络。如果您有多区域旧版网络,则必须将资源迁移到单个区域,然后才能使用转换工具。

创建旧版网络

您无法再创建旧版网络。

如果您尝试创建旧版网络,则会显示此错误:

Creation of legacy mode networks is deprecated. Please create a subnet mode
network instead by removing the IPv4Range field and adding the
autoCreateSubnetworks field to your network insert request.

从旧版网络迁移虚拟机

您可以将虚拟机 (VM) 实例从旧版网络迁移到 VPC 网络。如需了解相关说明,请参阅在网络之间迁移虚拟机

删除旧版网络

对于旧版网络,只有在网络未被任何资源使用的情况下,才能明确删除网络。

删除网络的方法如下:

gcloud compute networks delete LEGACY_NETWORK_NAME

替换以下内容:

  • LEGACY_NETWORK_NAME:您要删除的旧版网络的名称。

将单区域旧版网络转换为 VPC 网络

您可以使用单区域转换工具将旧版网络转换为同一项目中的自定义模式 VPC 网络。旧版网络中的所有资源都必须位于单个区域中。如需了解详情,请参阅单区域转换详情

单区域转换工具的限制

  • 转换开始后便无法取消。

  • 在将旧版网络转换为 VPC 网络之前,所有资源都必须存在于单个区域中。如果您在多个区域中拥有资源,转换将失败,并且 Google Cloud 不会执行任何操作。您必须手动将资源移动到单个区域,或从非迁移区域中移除资源。例如,您无法按区域将资源转换为多个 VPC 网络。

  • 在转换期间,网络会继续传输流量,并且通信不会中断。但是,对网络资源的更改是有限的。可以删除网络资源,但在转换完成之前,某些删除操作会被屏蔽。转换期间无法创建网络资源。

  • 您无法将转换后的 VPC 网络还原到旧版网络。

  • 如果旧版网络包含 Google Kubernetes Engine 集群,则必须在转换旧版网络后升级 GKE 集群,以确保组件正常运行。如需了解详情,请参阅转换包含 GKE 集群的旧版网络

准备转换旧版网络

  1. 建议在网络上的用户活动较低时执行转换。

  2. 为了使用转换,旧版网络中的所有资源都必须位于一个区域中。如果您的资源位于多个区域,请确定要使用的区域,然后将实例移动到该区域。您必须手动移动或删除不在该区域的其他资源。

  3. 确保网络 CIDR 范围内的最后两个内部 IP 地址未使用。这些 IP 地址是 VPC 网络子网中不可用的地址

    例如,对于 IP 地址范围为 10.240.0.0/16 的网络,请验证 10.240.255.25410.240.255.255 未分配给任何资源。

  4. 手动扩容任何实例组以涵盖转换期间的任何预期需求,并停用自动扩缩器

    如果转换期间启用了自动扩缩器,并且自动扩缩器尝试创建新实例,您可能会看到错误

  5. 如果旧版网络包含 GKE 集群,请参阅转换包含 GKE 集群的旧版网络

转换旧版网络

使用该工具从旧版网络转换为 VPC 网络不会中断网络流量;您的资源会继续正常运行。不论网络转换因任何原因失败,网络转换会自动回滚。如果遇到错误,请参阅问题排除部分以获取解决方案。

  1. 将旧版网络转换为 VPC 网络。

    转换是一项长时间运行的操作。所需时间取决于网络上的资源数量。转换网络至少需要七分钟才能完成。大型网络每 1000 个虚拟机可能需要 20 多分钟。在转换期间,不允许更改网络。

    gcloud

    gcloud beta compute networks update LEGACY_NETWORK_NAME \
        --switch-to-custom-subnet-mode
    

    替换以下内容:

    • LEGACY_NETWORK_NAME:您要转换的旧版网络的名称。

    API

    POST https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/networks/LEGACY_NETWORK_NAME/switchToCustomMode
    

    替换以下内容:

    • PROJECT_ID:您要转换的旧版网络所属的项目。

    • LEGACY_NETWORK_NAME:您要转换的旧版网络的名称。

    您可以使用 globalOperations.get 方法或 globalOperations.wait 方法监控操作的状态。

  2. 操作完成后,检查网络的子网模式是否为 CUSTOM

    列出您的网络以查看其子网模式:

    gcloud compute networks list
    
  3. 如果您之前停用了任何自动扩缩器,请重新启用自动扩缩器

  4. 在 VPC 网络中,在要创建新资源的区域中添加子网

  5. 重新创建转换中未包含的任何资源。

转换包含 GKE 集群的旧版网络

如果旧版网络包含 GKE 集群,则必须在转换后升级 GKE 集群,以确保组件正常运行。

使用 GKE 网络转换脚本执行网络、集群和节点池升级。

如果您在不使用脚本的情况下已将旧版网络转换到 VPC 网络,则可以使用该脚本进行必要的集群和节点池升级。

在单区域转换后更新资源

旧版网络没有子网,因此用于在旧版网络上创建或修改资源的任何脚本或命令都未指定子网。VPC 网络包含子网;因此,管理 VPC 网络中资源的脚本和命令通常需要指定子网。

但是,要确保在转换为 VPC 网络后用于管理旧版网络的脚本和命令仍然有效,请注意以下事项:

  • 如果您运行 gcloud CLI 命令或发出指定在转换时旧版网络使用的区域的 API 请求,则子网会自动运行设置为转换操作期间创建的子网。

  • 如果您运行 gcloud CLI 命令或发出指定在转换时旧版网络使用的不同区域的 API 请求,则您必须指定子网。

排查单区域转换问题

转换尝试:无法转换在多个区域都有虚拟机的网络

尝试转换我的网络时,您会收到此错误:

  ERROR: (gcloud.compute.networks.switchToCustomMode) ResponseError: code=400, message=Only single-region legacy networks are supported. This network has at least one resource in us-central1 and at least one resource in asia-east1.

解决方案:仅当所有这些资源都存在于单个区域时,才能将网络模式从旧版模式转换为自定义模式:

  • 实例,包括已停止的实例
  • 实例组
  • 代管式实例组
  • 转发规则
  • routers

如需继续操作,请在转换前将所有资源迁移到一个区域或将其删除。

转换尝试:由于超出速率限制,无法转换网络

尝试转换我的网络时,您会收到此错误:

  Error 403: Rate Limit Exceeded, rateLimitExceeded
  

解决方案:转换操作具有并发操作的全局配额。如果出现此错误,请等待五分钟,然后重试。

转换期间:无法在正在切换模式的网络中创建虚拟机

尝试创建、删除或更新虚拟机时,您会收到此错误:

  ERROR: (gcloud.compute.instances.create) ResponseError: code=400, message="Resource not ready".
  

解决方案:切换网络的模式会锁定网络,从而在操作完成之前无法在其中创建新虚拟机。您可以在转换完成后创建、删除和更新虚拟机。

转换后:如果不指定子网,则无法创建资源

尝试在网络上创建新资源时,您会收到此错误:

  gERROR: (gcloud.compute.instances.create) ResponseError: code=400, message=Subnetwork should be specified for custom subnetmode network.

解决方案:更新资源创建脚本以指定资源的子网。

转换后:无法删除子网

当您尝试删除转换后的网络或在转换操作期间创建子网时,会收到此错误:

  ERROR: (gcloud.compute.networks.subnets.delete) Could not fetch resource:
   - Cannot delete subnetwork created during legacy network to custom-mode conversion for a day. Please try again tomorrow.
   

解决方案:等待一天,然后尝试删除网络或子网。

手动迁移到 VPC 网络

如果您无法执行单区域转换,可以在 VPC 网络中重新创建旧网络中的所有资源。没有自动化解决方案可以将旧版网络中的多个区域转换为 VPC 网络。

  1. 创建自定义模式 VPC 网络,然后在使用的每个区域中添加一个子网。

  2. 在旧版网络中,记录现有资源的详细信息。您需要此信息,以便在 VPC 网络中重新创建它们。

    为了帮助您开始使用,以下几项是您可能需要重新创建的一些常见资源。

  3. 使用您记录的配置重新创建资源。某些资源(如虚拟机实例)需要额外的规划和重新创建步骤。如需查看一些示例,请参阅特殊注意事项部分。

    如果可能,请先重新创建资源,然后再移除现有资源。这样,您可以在移除现有资源之前测试和验证新资源是否按预期运行。并非所有资源都可能重新创建。您可能会超出配额,或者可能无法重复使用现有命名惯例。

  4. 删除旧资源和旧版网络。

手动迁移的特殊注意事项

简单地重新创建资源可能会导致服务中断。为避免中断,您可能需要在迁移之前执行其他操作。例如,您可能需要复制服务的基础架构,以便将流量从旧网络重定向到新网络。或者,您可能需要截取现有虚拟机实例的快照,以保留其数据并将其移动到新实例。

以下是您可能需要在迁移之前进行规划的示例:

  • 如果您使用的是临时外部 IP 地址,并且想要继续使用它,请将其升级为预留的静态 IP 地址
  • 如果您需要移动虚拟机实例,可以手动重新创建它们,或使用 Google Cloud 从已有实例创建类似的实例。如果您创建类似的实例,Google Cloud 不会复制现有数据,但您可以使用快照启动磁盘执行复制操作。
  • 如果您有负载均衡服务并希望让它保持运行,请在 VPC 网络中添加重复后端。在移除旧式网络中的后端之前,您可以开始将流量定向到 VPC 中的后端。

后续步骤