排查具有多个网络接口的虚拟机的问题

本页面介绍了在创建和使用具有多个网络接口的虚拟机时可能会遇到的常见问题的问题排查步骤。

我无法创建具有多个接口的虚拟机

您可能会看到以下某条错误消息:

  • Invalid value for field 'resource': ''. Too many network interfaces. The maximum number of network interfaces allowed for this machine type is.

    如果您收到这条错误消息,则表示您尝试创建的接口数量超出了实例机器类型支持的接口数量上限。查看接口数量上限表。

  • Networks must be distinct for NICs attached to a VM.

    如果您收到这条消息,则表示您正尝试在同一网络中创建多个接口。每个网络接口都必须连接到不同的 VPC 网络。

  • Subnetwork CIDR ranges must be non-overlapping for NICs attached to a VM.

    如果您收到这条消息,则表示与您的虚拟机接口关联的 CIDR 范围存在重叠。这些 CIDR 范围包括与虚拟机接口关联的所有主要子网范围,以及用于别名 IP 范围的次要范围。每个接口都会连接到一个子网,每个子网位于不同的 VPC 网络中,不得与其他接口的子网重叠。例如,如果您尝试在 REGION_A 区域中创建实例,则可以使用以下命令或Google Cloud 控制台来检查子网的主要 CIDR 范围。

    gcloud compute networks subnets list --regions REGION_A
    NAME                REGION      NETWORK          RANGE
    default             REGION_A  default          10.138.0.0/20
    overlapping-subnet  REGION_A  test-network     10.138.8.0/24
    

    如需检查次要子网 CIDR 范围,请使用以下命令或Google Cloud 控制台

    gcloud compute networks subnets describe overlapping-subnet --region REGION_A
    
    ...
    ipCidrRange: 10.128.8.0/24
    ...
    secondaryIpRanges:
    - ipCidrRange: 10.138.8.0/24
      rangeName: conflicting-range
    
  • Multiple network interfaces are not supported on legacy networks.

    如果您收到这条消息,则表示您正尝试在旧版网络中创建实例。旧版网络不支持具有多个接口的实例。您可以使用以下方法之一来检查网络是否属于旧版网络:

    • 在 Google Cloud 控制台中,前往 VPC 网络页面,然后查看模式列。
    • 运行 gcloud compute networks list 命令并检查 SUBNET_MODE 字段。
  • Required 'compute.instances.create' permission for 'projects/PROJECT_ID/zones/ZONE/instances/test-inst'

    如果您收到这条消息,则表示您登录的账号没有创建实例所必需的 IAM 权限。如需详细了解创建实例所需的角色,请参阅权限、IAM 和具有多个网络接口的实例。您可以检查与项目相关的 IAM 政策,确定其是否授予您以下任何角色:OWNEREDITORcompute.instanceAdmin.v1。如需在共享 VPC 中创建实例,您还需要具备 compute.networkUser 角色。在以下示例中,账号 email2@gmail.com 没有创建实例所需的足够 IAM 权限。如需了解详细说明,请参阅授予、更改和撤消对资源的访问权限 IAM 指南。

    gcloud projects get-iam-policy PROJECT_ID
    bindings:
    - members:
      - user:email1@gmail.com
        role: roles/owner
    - members:
      - serviceAccount:our-project-123@
      - serviceAccount:123456789012-compute@
        role: roles/editor
    - members:
      - user:email2@gmail.com
        role: roles/viewer
    etag: BwUjMhXbSPU=
    version: 1
    

    您可以要求您的项目 Owner 或 Editor 授予您 OWNEREDITORcompute.instanceAdmin.v1 角色。如果您将任何接口与属于共享 VPC 的子网关联,那么您还需要具备 compute.networkUser 角色。

    gcloud projects set-iam_policy --member user:email2@gmail.com --role roles/editor
    

我无法连接到次要接口的内部 IP 地址

  • 检查防火墙规则,确定其是否允许连接到虚拟机次要接口。如需进行检查,您可以通过以下两种方式之一,查看连接到次要接口的网络的防火墙规则:您可以访问Google Cloud 控制台并点击相应的 VPC 网络;也可以使用以下 gcloud 命令。

    gcloud compute firewall-rules list --filter='network:NETWORK_NAME'
    
  • 检查您是否在尝试从互联网地址或次要接口网络外部连接到次要接口。您只能从一个接口所在的网络内连接到该接口的内部 IP。如果您需要从网络外部访问该接口,则可以为次要接口分配外部 IP 地址。

  • 检查您是否在尝试从次要接口所连接的子网外部连接到次要接口的内部 IP,比如说从相同网络的另一个子网连接,或者从对等互连网络连接。每个实例多个网络接口解释了 VPC 对等互连和具有多个接口的虚拟机实例之间的相互作用。如需从接口的子网外部访问次要接口,您可能需要在虚拟机上配置路由。如需详细了解 DHCP 如何配置虚拟机中的默认路由,请参阅规范