配置 VPC 网络

Google Cloud Managed Lustre 在虚拟私有云 (VPC) 中运行,可为 Compute Engine 虚拟机 (VM) 实例Google Kubernetes Engine (GKE) 集群无服务器工作负载提供网络功能。

在创建 Managed Lustre 实例和客户端 Compute Engine 虚拟机或 Google Kubernetes Engine 集群时,您必须指定相同的 VPC 网络。

所需权限

您必须拥有以下 IAM 权限:

  • serviceusage.services.enable
  • compute.networks.create
  • compute.addresses.create
  • compute.addresses.get
  • compute.firewalls.create
  • servicenetworking.services.addPeering

您可以通过添加以下所有预定义角色来授予这些权限:

或者,创建包含特定权限的自定义角色

如需将角色授予用户,请执行以下操作:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:EMAIL_ADDRESS"
  --role=ROLE

创建和配置 VPC

  1. 启用服务网络。

    gcloud services enable servicenetworking.googleapis.com
    
  2. 创建自定义模式的 VPC 网络。

    gcloud compute networks create NETWORK_NAME \
      --subnet-mode=custom \
      --mtu=8896
    
  3. 为 GKE 或 Compute Engine 资源创建主子网。

    gcloud compute networks subnets create SUBNET_NAME \
      --network=NETWORK_NAME \
      --range=10.128.0.0/20 \
      --region=REGION
    
  4. 为专用服务访问通道分配 IP 范围。

    此内部 IP 范围用于专用服务访问通道连接,该连接可将您的 VPC 网络与 Google 管理的网络(Managed Lustre 资源预配于该网络中)进行对等互连。此分配的范围用于为 Managed Lustre 实例提供 IP,并且不得与 VPC 网络中的任何子网重叠。

    每个 Managed Lustre 实例都需要一个前缀长度至少为 23 的连续 CIDR 地址块。

    我们建议创建更大的 IP 范围(/20),以便创建多个 Managed Lustre 实例或使用其他 Google Cloud 服务。

    gcloud compute addresses create IP_RANGE_NAME \
      --global \
      --purpose=VPC_PEERING \
      --prefix-length=20 \
      --description="Managed Lustre VPC Peering" \
      --network=NETWORK_NAME
    
  5. 获取与您在上一步中创建的范围关联的 CIDR 块。

    CIDR_BLOCK=$(
      gcloud compute addresses describe IP_RANGE_NAME \
        --global  \
        --format="value[separator=/](address, prefixLength)"
    )
    
  6. 创建一条防火墙规则,以允许来自您创建的 IP 范围的 TCP 流量。

    gcloud compute firewall-rules create FIREWALL_NAME \
      --allow=tcp:988,tcp:6988 \
      --network=NETWORK_NAME \
      --source-ranges=$CIDR_BLOCK
    
  7. 连接对等互连。

    gcloud services vpc-peerings connect \
      --network=NETWORK_NAME \
      --ranges=IP_RANGE_NAME \
      --service=servicenetworking.googleapis.com
    

为多 NIC 创建其他子网

如果您计划使用多个网络接口卡 (multi-NIC) 来聚合带宽,则必须在 VPC 网络中为每个 NIC 创建单独的子网。

如需受益于多 NIC,您必须使用连接到常规 VPC 的具有多个物理 NIC 的 Compute Engine 机器类型。连接到具有 RDMA 网络配置文件的 VPC 的 NIC 不能用于增加常规网络带宽。如需了解详情,请参阅网络和 GPU 机器

如需为其他物理 NIC 创建子网,请执行以下操作:

gcloud compute networks subnets create SUBNET_NAME_2 \
  --network=NETWORK_NAME \
  --range=10.130.0.0/20 \
  --region=REGION

对每个额外的 NIC 重复执行此步骤。确保每个子网的 IP 范围不会相互重叠。

VPC Service Controls

Managed Lustre 支持 VPC Service Controls (VPC-SC)。如需了解详情,请参阅通过服务边界保护实例

排查 VPC 设置问题

无法为服务 servicenetworking.googleapis.com 添加对等互连

ERROR: (gcloud.services.vpc-peerings.connect) User [$(USER)] does not have
permission to access services instance [servicenetworking.googleapis.com]
(or it may not exist): Permission denied to add peering for service
'servicenetworking.googleapis.com'.

此错误表示您的用户账号没有 servicenetworking.services.addPeering IAM 权限。

如需了解如何向您的账号添加以下角色,请参阅使用 IAM 进行访问权限控制

  • roles/compute.networkAdmin
  • roles/servicenetworking.networksAdmin

无法在 CreateConnection 中修改分配的范围

ERROR: (gcloud.services.vpc-peerings.connect) The operation
"operations/[operation_id]" resulted in a failure "Cannot modify allocated
ranges in CreateConnection. Please use UpdateConnection."

如果您已在此网络上创建了具有不同 IP 范围的 VPC 对等互连,则会返回此错误。有两个可能的解决方案:

替换现有 IP 范围:

gcloud services vpc-peerings update \
  --network=NETWORK_NAME \
  --ranges=IP_RANGE_NAME \
  --service=servicenetworking.googleapis.com \
  --force

或者,将新 IP 范围添加到现有连接:

  1. 检索对等互连的现有 IP 范围列表:

    EXISTING_RANGES="$(
      gcloud services vpc-peerings list \
        --network=NETWORK_NAME \
        --service=servicenetworking.googleapis.com \
        --format="value(reservedPeeringRanges.list())" \
        --flatten=reservedPeeringRanges
    )
    
  2. 然后,将新范围添加到对等互连中:

    gcloud services vpc-peerings update \
      --network=NETWORK_NAME \
      --ranges="${EXISTING_RANGES}",IP_RANGE_NAME \
      --service=servicenetworking.googleapis.com
    

IP 地址范围用尽

如果实例创建因 IP 地址范围耗尽而失败,请执行以下操作:

ERROR: (gcloud.alpha.Google Cloud Managed Lustre.instances.create) FAILED_PRECONDITION: Invalid
resource state for "NETWORK_RANGES_NOT_AVAILABLE": IP address range exhausted

按照 VPC 指南修改现有专用连接以添加 IP 地址范围。

我们建议前缀长度至少为 /20(4096 个地址)。

后续步骤