创建和管理 Private Service Connect 接口

本页面介绍提供方网络管理员如何创建和管理 Private Service Connect 接口。 Private Service Connect 接口允许服务提供方 Virtual Private Cloud (VPC) 网络发起与使用方 VPC 网络的连接。

准备工作

角色

如需获得创建 Private Service Connect 接口所需的权限,请让管理员向您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

Compute Instance Admin (v1) 角色包含创建 Private Service Connect 接口所需的 compute.instances.pscInterfaceCreate 权限。

创建具有 Private Service Connect 接口的虚拟机

如需创建 Private Service Connect 接口连接,您需要一个至少有两个网络接口的虚拟机实例。第一个接口连接到提供方子网。其他接口可以是 Private Service Connect 接口,用于请求与不同使用方 VPC 网络中的网络连接的连接。

如果接受连接, Google Cloud 会向 Private Service Connect 接口分配由网络连接指定的子网中的内部 IP 地址。

创建具有多个 Private Service Connect 接口的虚拟机时,每个 Private Service Connect 接口都必须连接到不同的网络连接,而这些网络连接位于不同的 VPC 网络中。

如果您创建了一个 Private Service Connect 接口,该接口引用了配置为手动接受连接的网络连接并且该接口的项目不在网络连接的接受列表中,则 Private Service Connect 接口的虚拟机创建过程会失败。在这种情况下,请与使用方组织合作,将您的项目添加到接受列表,然后创建 Private Service Connect 接口。

创建 Private Service Connect 接口时,您可以选择为其分配一个或多个内部别名 IP 范围。如果您计划分配别名 IP 地址范围,请与使用方组织联系以确定适当的 IP 地址范围。

如需分配别名 IP 范围,请以 CIDR 表示法指定范围的前缀长度。在为 Private Service Connect 接口分配一个或多个别名 IP 范围时,Google Cloud 会从与网络连接关联的子网的主要 IP 地址范围中分配别名 IP 范围。Private Service Connect 接口的主要 IP 地址是从任何别名 IP 范围之外分配的。如果网络连接的子网中没有足够的 IP 地址来分配主要 IP 地址和别名 IP 范围,则 Private Service Connect 接口的虚拟机创建过程会失败。您可以通过描述接口的虚拟机找到分配的特定 IP 地址。

控制台

创建虚拟机实例

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面:

    进入“虚拟机实例”

  2. 点击创建实例

  3. 输入名称。

  4. 点击区域,然后选择您希望连接到的网络连接所在的区域。

  5. 选择一个可用区。

  6. 如需配置虚拟机的默认网络接口,请执行以下操作:

    1. 点击网络
    2. 网络接口部分中,点击第一个网络接口(即默认网络接口)。
    3. 请选择一个网络。
    4. 选择与 Private Service Connect 接口的网络连接位于同一区域的子网。
    5. 选择 IP 栈类型。
  7. 点击完成

添加 Private Service Connect 接口

您可以针对要添加的每个接口重复上述步骤。

添加虚拟 Private Service Connect 接口

  1. 点击添加网络接口
  2. 对于接口类型,选择 Private Service Connect
  3. 输入相应接口的网络连接的网址。
  4. 为接口选择 IP 栈类型。网络连接的子网决定了可能的堆栈类型。
  5. 可选:如需添加别名 IP 范围,请执行以下操作:
    1. 别名 IP 范围部分中,点击添加 IP 范围
    2. 前缀长度框中,输入前缀长度,例如 /30。您可以通过点击添加 IP 范围,然后输入您希望添加的每个额外别名 IP 范围的前缀长度,来添加多个别名 IP 范围。
  6. 点击完成

添加动态 Private Service Connect 接口

  1. 点击添加 Dynamic Network Interface
  2. 对于接口类型,选择 Private Service Connect
  3. 选择父级网络接口。
  4. 输入 VLAN ID。
  5. 为接口选择 IP 栈类型。网络连接的子网决定了可能的堆栈类型。
  6. 可选:如需添加别名 IP 范围,请执行以下操作:
    1. 别名 IP 范围部分中,点击添加 IP 范围
    2. 前缀长度框中,输入前缀长度,例如 /30。您可以通过点击添加 IP 范围,然后输入您希望添加的每个额外别名 IP 范围的前缀长度,来添加多个别名 IP 范围。
  7. 点击完成

如需创建虚拟机,请点击创建

gcloud

  • 如需创建具有虚拟 Private Service Connect 接口的虚拟机,请使用 gcloud compute instances create 命令

    gcloud compute instances create INSTANCE_NAME \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE \
        --image-project=IMAGE_PROJECT \
        --image-family=IMAGE_FAMILY \
        --network-interface='subnet=PRODUCER_SUBNET,no-address' \
        --network-interface='network-attachment=ATTACHMENT_URI,stack-type=STACK_TYPE
    

    替换以下内容:

    • INSTANCE_NAME:新实例的名称
    • ZONE:新实例的可用区
    • MACHINE_TYPE:实例的机器类型,可以是预定义,也可以是自定义,例如 n1-standard-1
    • IMAGE_PROJECT:映像系列所属的项目

      例如,如果您将 debian-12 指定为映像系列,请将 debian-cloud 指定为映像项目。您可以使用 gcloud compute images list 命令查看可用映像、映像项目和映像系列的列表。

    • IMAGE_FAMILY:实例所属的映像系列

      这会使用映像系列中最新的未弃用操作系统映像创建虚拟机。例如,如果您指定 debian-12,Compute Engine 会使用 Debian 12 映像系列中最新版本的操作系统映像。

    • PRODUCER_SUBNET:虚拟机主要网络接口的子网

      此子网必须与 Private Service Connect 接口的网络连接位于同一区域。

    • ATTACHMENT_URI:网络连接的 URI,例如:projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME

    • STACK_TYPE:动态 Private Service Connect 接口的堆栈类型

      如需创建使用 IPv4 地址的接口,请指定 IPV4_ONLY(默认值)。如需创建同时使用 IPv4 和 IPv6 地址(双栈)的接口,请指定 IPV4_IPV6。对于仅限 IPv6 的情况,请指定 IPV6_ONLY

      该接口的堆栈类型必须与网络连接的子网的堆栈类型兼容。

  • 如需创建具有动态 Private Service Connect 接口的虚拟机,请使用以下命令:

    gcloud compute instances create INSTANCE_NAME \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE \
        --image-project=IMAGE_PROJECT \
        --image-family=IMAGE_FAMILY \
        --network-interface='subnet=PRODUCER_SUBNET,no-address' \
        --network-interface='network-attachment=ATTACHMENT_URI,vlan=VLAN_ID,stack-type=STACK_TYPE'
    

    VLAN_ID 替换为动态 Private Service Connect 接口的 VLAN ID,该 ID 必须是介于 2 到 255 之间的整数。

    共用父级 vNIC 的每个动态接口的 VLAN ID 必须是唯一的。您可以将同一 ID 重复用于与不同 vNIC 关联的其他动态接口。

  • 如需为 Private Service Connect 接口分配别名 IP 范围,请使用以下命令:

    gcloud compute instances create INSTANCE_NAME \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE \
        --image-project=IMAGE_PROJECT \
        --image-family=IMAGE_FAMILY \
        --network-interface='subnet=PRODUCER_SUBNET,no-address' \
        --network-interface='network-attachment=ATTACHMENT_URI,vlan=VLAN_ID,stack-type=STACK_TYPE,aliases=ALIAS_IP_RANGES'
    

    ALIAS_IP_RANGES 替换为要分配给接口的一个或多个别名 IP 范围。您可以输入特定范围 (192.168.100.0/24)、特定 IP 地址 (192.168.100.1) 或 CIDR 格式的前缀长度 (/24)。您可以在以英文分号分隔的列表中输入多个值。您无法输入多个不同类型的值。例如,不支持 192.168.100.0/24;/28

  • 如需创建具有多个 Private Service Connect 接口的虚拟机,请为每个接口添加单独的 --network-interface 标志,其中每个标志都指向不同的网络连接。

    对于动态 Private Service Connect 接口,父级 vNIC 由命令中标志的顺序决定。父级 vNIC 是您在动态接口之前指定的第一个 vNIC。

    您可以创建共存于同一虚拟机上的动态和虚拟 Private Service Connect 接口。例如,以下命令会创建一个同时具有虚拟 Private Service Connect 接口和动态 Private Service Connect 接口的虚拟机。

    VLAN ID 为 23 的动态 Private Service Connect 接口的父级是连接到 producer-subnet 的第一个 vNIC。VLAN ID 为 4 的动态接口的父级是连接到 producer-subnet-2 的 vNIC。最后一个接口是虚拟 Private Service Connect 接口。

    gcloud compute instances create producer-vm \
        --zone=us-west-1a \
        --network-interface='subnet=producer-subnet,no-address' \
        --network-interface='network-attachment=projects/consumer-project/regions/us-west-1/networkAttachments/consumer-1-network-attachment,vlan=2' \
        --network-interface='network-attachment=projects/consumer-project/regions/us-west-1/networkAttachments/consumer-2-network-attachment,vlan=3' \
        --network-interface='network=producer-vpc-2,subnet=producer-subnet-2' \
        --network-interface='network-attachment=projects/consumer-project/regions/us-west-1/networkAttachments/consumer-3-network-attachment,vlan=4' \
        --network-interface='network-attachment=projects/consumer-project/regions/us-west-1/networkAttachments/consumer-4-network-attachment'
    

API

  • 如需创建具有虚拟 Private Service Connect 接口的虚拟机,请向 instances.insert 方法发送请求。

    HTTP 方法和网址:

    POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances
    

    请求 JSON 正文:

    {
      "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
      "name": "VM_NAME",
      "disks": [
        {
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          },
          "boot": true
        }
      ],
      "networkInterfaces": [
        {
          "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK",
          "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/PRODUCER_SUBNET"
        },
        {
          "networkAttachment": "ATTACHMENT_URI",
          "stackType": "STACK_TYPE"
        }
      ]
    }
    

    替换以下内容:

    • PRODUCER_PROJECT_ID:虚拟机的项目 ID
    • INSTANCE_ZONE:新实例的可用区
    • MACHINE_TYPE_ZONE:机器类型的可用区
    • MACHINE_TYPE:实例的机器类型,可以是预定义,也可以是自定义,例如 n1-standard-1
    • VM_NAME:虚拟机实例的名称
    • IMAGE_PROJECT:映像系列所属的项目

      例如,如果您将 debian-12 指定为映像系列,请将 debian-cloud 指定为映像项目。您可以使用 gcloud compute images list 命令查看可用映像、映像项目和映像系列的列表。

    • IMAGE_FAMILY:实例所属的映像系列

      这会使用映像系列中最新的未弃用操作系统映像创建虚拟机。例如,如果您指定 debian-12,Compute Engine 会使用 Debian 12 映像系列中最新版本的操作系统映像。

    • PRODUCER_NETWORK:虚拟机主要网络接口的网络

    • SUBNET_REGION:虚拟机主要网络接口的子网所属的区域

    • PRODUCER_SUBNET:虚拟机主要网络接口的子网

      此子网必须与 Private Service Connect 接口的网络连接位于同一区域。

    • ATTACHMENT_URI:网络连接的 URI,例如:projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME

    • STACK_TYPE:动态 Private Service Connect 接口的堆栈类型

      如需创建使用 IPv4 地址的接口,请指定 IPV4_ONLY(默认值)。如需创建同时使用 IPv4 和 IPv6 地址(双栈)的接口,请指定 IPV4_IPV6。对于仅限 IPv6 的情况,请指定 IPV6_ONLY

      该接口的堆栈类型必须与网络连接的子网的堆栈类型兼容。

  • 如需创建具有动态 Private Service Connect 接口的虚拟机,请发送以下请求。在网络接口对象中添加 VLAN ID,以指定创建动态 Private Service Connect 接口。

    HTTP 方法和网址:

    POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances
    

    请求 JSON 正文:

    {
      "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
      "name": "VM_NAME",
      "disks": [
        {
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          },
          "boot": true
        }
      ],
      "networkInterfaces": [
        {
          "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK",
          "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/PRODUCER_SUBNET"
        },
        {
          "networkAttachment": "ATTACHMENT_URI",
          "vlan": VLAN_ID,
          "stackType": "IPV4_IPV6"
        }
      ]
    }
    

    VLAN_ID 替换为动态 Private Service Connect 接口的 VLAN ID,该 ID 必须是介于 2 到 255 之间的整数。

    共用父级 vNIC 的每个动态接口的 VLAN ID 必须是唯一的。您可以将同一 ID 重复用于与不同 vNIC 关联的其他动态接口。

  • 如需为 Private Service Connect 接口分配别名 IP 范围,请发送以下请求。添加 aliasesIpRanges 字段。

    HTTP 方法和网址:

    POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances
    

    请求 JSON 正文:

    {
      "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
      "name": "VM_NAME",
      "disks": [
        {
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
          },
          "boot": true
        }
      ],
      "networkInterfaces": [
        {
          "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK",
          "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/PRODUCER_SUBNET"
        },
        {
          "aliasIpRanges": [
            {
              "ipCidrRange": "ALIAS_IP_RANGE"
            }
          ],
          "networkAttachment": "ATTACHMENT_URI"
        }
      ]
    }
    

    ALIAS_IP_RANGE 替换为要分配给接口的别名 IP 范围。您可以输入特定范围 (192.168.100.0/24)、特定 IP 地址 (192.168.100.1) 或 CIDR 格式的前缀长度 (/24)。

    您可以在 aliasIpRanges 数组中指定多个别名 IP 范围。每个范围都必须以相同的形式指定:

    "aliasIpRanges": [
      {
        "ipCidrRange": "/28"
      },
      {
        "ipCidrRange": "/30"
      }
    ]
    
  • 如需创建具有多个 Private Service Connect 接口的虚拟机,请在 networkInterfaces 数组中为每个接口添加单独的对象,其中每个接口对象都指向不同的网络连接。

    对于动态 Private Service Connect 接口,父级 vNIC 由数组中对象的顺序决定。父级 vNIC 是您在动态接口之前指定的第一个 vNIC。

    您可以创建共存于同一虚拟机上的动态和虚拟 Private Service Connect 接口。例如,以下请求会创建一个同时具有虚拟 Private Service Connect 接口和动态 Private Service Connect 接口的虚拟机。

    VLAN ID 为 23 的动态 Private Service Connect 接口的父级是连接到 producer-subnet 的第一个 vNIC。VLAN ID 为 4 的动态接口的父级是连接到 producer-subnet-2 的 vNIC。最后一个接口是虚拟 Private Service Connect 接口。

    {
      "machineType": "zones/us-west-1a/machineTypes/e2-medium",
      "name": "producer-vm",
      "disks": [
        {
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-11"
        },
        "boot": true
      }
      ],
      "networkInterfaces": [
        {
          "network": "https://www.googleapis.com/compute/v1/projects/producer-project-id/global/networks/producer-vpc-1",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/producer-project-id/regions/us-west-1/subnetworks/producer-subnet"
        },
        {
          "networkAttachment": "projects/consumer-project1/regions/us-west-1/networkAttachments/consumer-1-network-attachment",
          "vlan": 2
        },
        {
          "networkAttachment": "projects/consumer-project2/regions/us-west-1/networkAttachments/consumer-2-network-attachment",
          "vlan": 3
        },
        {
          "network": "https://www.googleapis.com/compute/v1/projects/producer-project-id/global/networks/producer-vpc-2",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/producer-project-id/regions/us-west-1/subnetworks/producer-subnet-2"
        },
        {
          "networkAttachment": "projects/consumer-project3/regions/us-west-1/networkAttachments/consumer-3-network-attachment",
          "vlan": 4
        },
        {
          "networkAttachment": "projects/consumer-project4/regions/us-west-1/networkAttachments/consumer-4-network-attachment"
        }
      ]
    }
    ```
    

如需详细了解如何创建虚拟机实例,请参阅创建和启动虚拟机实例

向现有虚拟机添加动态 Private Service Connect 接口

您可以向现有虚拟机添加动态 Private Service Connect 接口,而无需重启虚拟机。

您必须先配置路由,然后流量才能通过新的 Private Service Connect 接口传输。

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面:

    进入“虚拟机实例”

  2. 点击要更新的虚拟机的名称。

  3. 点击修改

  4. 网络部分中,点击添加 Dynamic Network Interface

  5. 对于接口类型,选择 Private Service Connect

  6. 选择父级网络接口。

  7. 输入 VLAN ID。

  8. 输入相应接口的网络连接的网址。

  9. 为接口选择 IP 栈类型。网络连接的子网决定了可能的堆栈类型

  10. 可选:如需添加别名 IP 范围,请执行以下操作:

    1. 别名 IP 范围部分中,点击添加 IP 范围
    2. 前缀长度框中,输入前缀长度,例如 /30。您可以通过点击添加 IP 范围,然后输入您希望添加的每个额外别名 IP 范围的前缀长度,来添加多个别名 IP 范围。
  11. 点击完成

  12. 点击保存

gcloud

如需向现有虚拟机添加单个动态 Private Service Connect 接口,请使用 gcloud compute instances network-interfaces add 命令

如需添加多个动态 Private Service Connect 接口,请针对要添加的每个接口重复执行该命令。

gcloud compute instances network-interfaces add INSTANCE_NAME \
    --zone=ZONE \
    --vlan=VLAN_ID \
    --parent-nic-name=PARENT_NIC_NAME \
    --network-attachment=ATTACHMENT_URI
    

替换以下内容:

  • INSTANCE_NAME:要更新的实例的名称
  • ZONE:要更新的实例所在的可用区
  • VLAN_ID:动态 Private Service Connect 接口的 ID(2 到 4094 之间的整数)

    共用父级 vNIC 的每个动态接口的 VLAN ID 必须是唯一的。您可以将同一 ID 重复用于与不同 vNIC 关联的其他动态接口。

  • PARENT_NIC_NAME:新 VLAN NIC 的父级网络接口的名称,例如 nic0

  • ATTACHMENT_URI:网络连接的 URI,例如:projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME

API

如需向现有虚拟机添加单个动态 Private Service Connect 接口,请向 instances.addNetworkInterface 方法发送请求。

如需添加多个动态 Private Service Connect 接口,请针对要添加的每个接口重复发出该请求。

HTTP 方法和网址:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/addNetworkInterface

请求 JSON 正文:

{
  "networkAttachment": "ATTACHMENT_URI",
  "parentNicName": "PARENT_NIC_NAME",
  "vlan": VLAN_ID
}

替换以下内容:

  • PROJECT_ID:虚拟机的项目 ID
  • ZONE:虚拟机所在的可用区
  • INSTANCE_NAME:要更新的虚拟机的名称

  • ATTACHMENT_URI:网络连接的 URI,例如:projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME

  • PARENT_NIC_NAME:新 VLAN NIC 的父级网络接口的名称,例如 nic0

  • VLAN_ID:VLAN NIC Private Service Connect 接口的 ID(2 到 4094 之间的整数)

    父级网络接口下每个 VLAN NIC 的 VLAN NIC 接口 ID 必须是唯一的,但您可以将同一 ID 重复用于与不同父级网络接口关联的其他 VLAN NIC。

从虚拟 Private Service Connect 接口迁移到动态 Private Service Connect 接口

如需将服务配置为使用动态 Private Service Connect 接口,而不是虚拟 Private Service Connect 接口,请执行以下操作。

  1. 创建一个虚拟机,该虚拟机使用动态 Private Service Connect 接口。
  2. 为新虚拟机配置路由
  3. 更新服务以使用新的虚拟机。
  4. 删除使用虚拟 Private Service Connect 接口的虚拟机。

使用实例模板创建和管理 Private Service Connect 接口

您可以使用实例模板创建和管理 Private Service Connect 接口。

创建实例模板后,您可以使用该模板执行以下操作:

如需创建使用别名 IP 范围或多个 Private Service Connect 接口的实例模板,请使用创建具有 Private Service Connect 接口的虚拟机时所用的方法。实例模板仅支持通过前缀长度指定别名 IP 范围。

控制台

  1. 在 Google Cloud 控制台中,前往实例模板页面:

    转到“实例模板”

  2. 点击创建实例模板

  3. 输入实例模板的名称

  4. 点击高级选项

  5. 点击网络

  6. 网络接口部分中,点击 展开箭头。

  7. 为实例模板的主要网络接口选择网络和子网。

  8. 点击完成

  9. 如需添加 Private Service Connect 接口,请执行以下操作。您可以针对要添加的每个接口重复执行上述步骤:

    • 对于虚拟 Private Service Connect 接口,请执行以下操作:
      1. 点击添加网络接口
      2. 对于接口类型,选择 Private Service Connect
    • 对于动态 Private Service Connect 接口,请执行以下操作:
      1. 点击添加 Dynamic Network Interface
      2. 对于接口类型,选择 Private Service Connect
      3. 选择父级网络接口。
      4. 输入 VLAN ID。
  10. 如需完成 Private Service Connect 接口的配置,请执行以下操作:

    1. 输入相应接口的网络连接的网址。
    2. 为接口选择 IP 栈类型。网络连接的子网决定了可能的堆栈类型
    3. 可选:如需添加别名 IP 范围,请执行以下操作:
      1. 别名 IP 范围部分中,点击添加 IP 范围
      2. 前缀长度框中,输入前缀长度,例如 /30。您可以通过点击添加 IP 范围,然后输入您希望添加的每个额外别名 IP 范围的前缀长度,来添加多个别名 IP 范围。
    4. 点击完成
  11. 如需创建虚拟机,请点击创建

gcloud

  • 如需创建具有虚拟 Private Service Connect 接口的实例模板,请使用 gcloud compute instance-templates create 命令

    gcloud compute instance-templates create NAME \
        --machine-type=MACHINE_TYPE \
        --image-project=IMAGE_PROJECT \
        --image-family=IMAGE_FAMILY \
        --region=REGION \
        --network-interface='subnet=PRODUCER_SUBNET,no-address' \
        --network-interface='network-attachment=ATTACHMENT_URI,stack-type=STACK_TYPE'
    

    替换以下内容:

    • NAME:新实例模板的名称
    • MACHINE_TYPE:实例的机器类型,可以是预定义,也可以是自定义,例如 n1-standard-1
    • IMAGE_PROJECT:映像系列所属的项目

      例如,如果您将 debian-12 指定为映像系列,请将 debian-cloud 指定为映像项目。您可以使用 gcloud compute images list 命令查看可用映像、映像项目和映像系列的列表。

    • IMAGE_FAMILY:实例所属的映像系列

      这会使用映像系列中最新的未弃用操作系统映像创建虚拟机。例如,如果您指定 debian-12,Compute Engine 会使用 Debian 12 映像系列中最新版本的操作系统映像。

    • REGION:实例模板制作者子网所在的区域。

    • PRODUCER_SUBNET:实例模板的子网

      使用此实例模板创建虚拟机时,系统会为虚拟机的主要网络接口分配此子网的内部 IP 地址。此子网必须与 Private Service Connect 接口的网络连接位于同一区域。

    • ATTACHMENT_URI:网络连接的 URI,例如:projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME

    • STACK_TYPE:实例模板的动态 Private Service Connect 接口的堆栈类型

      如需创建使用 IPv4 地址的接口,请指定 IPV4_ONLY(默认值)。如需创建同时使用 IPv4 和 IPv6 地址(双栈)的接口,请指定 IPV4_IPV6。对于仅限 IPv6 的情况,请指定 IPV6_ONLY

      该接口的堆栈类型必须与网络连接的子网的堆栈类型兼容。

  • 如需创建具有动态 Private Service Connect 接口的实例模板,请使用以下命令。

    gcloud compute instance-templates create NAME \
        --machine-type=MACHINE_TYPE \
        --image-project=IMAGE_PROJECT \
        --image-family=IMAGE_FAMILY \
        --region=REGION \
        --network-interface='subnet=PRODUCER_SUBNET,no-address' \
        --network-interface='network-attachment=ATTACHMENT_URI,vlan=VLAN_ID,stack-type=STACK_TYPE'
    

    VLAN_ID 替换为动态 Private Service Connect 接口的 VLAN ID,该 ID 必须是介于 2 到 255 之间的整数。

    共用父级 vNIC 的每个动态接口的 VLAN ID 必须是唯一的。您可以将同一 ID 重复用于与不同 vNIC 关联的其他动态接口。

API

  • 如需创建具有虚拟 Private Service Connect 接口的实例模板,请向 instanceTemplates.insert 方法发出请求。

    HTTP 方法和网址:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
    

    请求 JSON 正文:

    {
      "name": "NAME",
      "properties": {
        "disks": [
          {
            "boot": true,
            "initializeParams": {
              "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
            }
          }
        ],
        "machineType": "MACHINE_TYPE",
        "networkInterfaces": [
          {
            "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/SUBNET_REGION/subnetworks/PRODUCER_SUBNET"
          },
          {
            "networkAttachment": "ATTACHMENT_URI",
            "stackType": "STACK_TYPE"
          }
        ]
      }
    }
    

    替换以下内容:

    • PROJECT_ID:实例模板的项目 ID
    • NAME:新实例模板的名称
    • IMAGE_PROJECT:映像系列所属的项目

      例如,如果您将 debian-12 指定为映像系列,请将 debian-cloud 指定为映像项目。您可以使用 gcloud compute images list 命令查看可用映像、映像项目和映像系列的列表。

    • IMAGE_FAMILY:实例所属的映像系列

      这会使用映像系列中最新的未弃用操作系统映像创建虚拟机。例如,如果您指定 debian-12,Compute Engine 会使用 Debian 12 映像系列中最新版本的操作系统映像。

    • MACHINE_TYPE:实例的机器类型,可以是预定义,也可以是自定义,例如 n1-standard-1

    • SUBNET_REGION:实例模板制作者子网所在的区域。

    • PRODUCER_SUBNET:实例模板的子网

      使用此实例模板创建虚拟机时,系统会为虚拟机的主要网络接口分配此子网的内部 IP 地址。此子网必须与 Private Service Connect 接口的网络连接位于同一区域。

    • ATTACHMENT_URI:网络连接的 URI,例如:projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME

    • STACK_TYPE:实例模板的动态 Private Service Connect 接口的堆栈类型

      如需创建使用 IPv4 地址的接口,请指定 IPV4_ONLY(默认值)。如需创建同时使用 IPv4 和 IPv6 地址(双栈)的接口,请指定 IPV4_IPV6。对于仅限 IPv6 的情况,请指定 IPV6_ONLY

      该接口的堆栈类型必须与网络连接的子网的堆栈类型兼容。

  • 如需创建具有动态 Private Service Connect 接口的实例模板,请发出以下请求。

    HTTP 方法和网址:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
    

    请求 JSON 正文:

    {
      "name": "NAME",
      "properties": {
        "disks": [
          {
            "boot": true,
            "initializeParams": {
              "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
            }
          }
        ],
        "machineType": "MACHINE_TYPE",
        "networkInterfaces": [
          {
            "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/SUBNET_REGION/subnetworks/PRODUCER_SUBNET"
          },
          {
            "networkAttachment": "ATTACHMENT_URI",
            "vlan": VLAN_ID,
            "stackType": "STACK_TYPE"
          }
        ]
      }
    }
    

    VLAN_ID 替换为动态 Private Service Connect 接口的 VLAN ID,该 ID 必须是介于 2 到 255 之间的整数。

    共用父级 vNIC 的每个动态接口的 VLAN ID 必须是唯一的。您可以将同一 ID 重复用于与不同 vNIC 关联的其他动态接口。

如需详细了解如何创建实例模板,请参阅创建实例模板

描述 Private Service Connect 接口

您可以描述一个虚拟机,以查看其 Private Service Connect 接口的详细信息。每个接口的名称、IP 地址、别名 IP 范围、网络连接和使用方子网列在虚拟机说明的网络接口部分中。

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    进入“虚拟机实例”

  2. 点击具有 Private Service Connect 接口的虚拟机。

  3. 网络接口部分中,查看 Private Service Connect 接口的详细信息。

gcloud

gcloud compute instances describe VM_NAME
    --zone=ZONE

替换以下内容:

  • VM_NAME:您的接口的虚拟机的名称。
  • ZONE:您的虚拟机所在的可用区。

API

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

替换以下内容:

  • PROJECT_ID:虚拟机的项目 ID。
  • ZONE:虚拟机的可用区。
  • VM_NAME:虚拟机的名称。

终止 Private Service Connect 接口连接

如需终止虚拟 Private Service Connect 接口与网络连接之间的连接,请删除该接口的虚拟机。

如需终止动态 Private Service Connect 接口与网络连接之间的连接,请执行以下任一操作:

  • 移除动态 Private Service Connect 接口。
  • 删除动态 Private Service Connect 接口的虚拟机。

移除动态 Private Service Connect 接口

您可以移除动态 Private Service Connect 接口,而无需重启关联的虚拟机。

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面:

    进入“虚拟机实例”

  2. 点击要更新的虚拟机的名称。

  3. 点击修改

  4. Dynamic Network Interface 部分中,点击要删除的接口旁边的 删除

gcloud

使用 gcloud compute instances network-interfaces delete 命令

gcloud compute instances network-interfaces delete INSTANCE_NAME \
    --zone=ZONE \
    --network-interface=INTERFACE_NAME

替换以下内容:

  • INSTANCE_NAME:接口的虚拟机实例的名称
  • ZONE:接口的虚拟机实例所在的可用区
  • INTERFACE_NAME:要删除的动态 Private Service Connect 接口的 Google Cloud 名称

    例如,nic0.10 是动态 Private Service Connect 接口的名称,其中 nic0 是父级,10 是 VLAN ID。

API

instances.deleteNetworkInterface 方法发送请求。

HTTP 方法和网址:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/deleteNetworkInterface?networkInterfaceName=INTERFACE_NAME

替换以下内容:

  • PROJECT_ID:接口虚拟机的项目 ID
  • ZONE:接口的虚拟机所在的可用区
  • INSTANCE_NAME:接口的虚拟机的名称
  • INTERFACE_NAME:要删除的动态 Private Service Connect 接口的 Google Cloud 名称

    例如,nic0.10 是动态 Private Service Connect 接口的名称,其中 nic0 是父级 vNIC 名称,10 是 VLAN ID。

删除具有 Private Service Connect 接口的虚拟机

删除虚拟机会终止所有 Private Service Connect 接口连接。

如需了解如何删除虚拟机,请参阅删除实例

后续步骤