設定虛擬私有雲網路

Google Cloud Managed Lustre 會在虛擬私有雲 (VPC) 中執行,為 Compute Engine 虛擬機器 (VM) 執行個體Google Kubernetes Engine (GKE) 叢集無伺服器工作負載提供網路功能。

建立 Managed Lustre 執行個體和用戶端 Compute Engine VM 或 Google Kubernetes Engine 叢集時,必須指定相同的虛擬私有雲網路。

所需權限

您必須具備下列 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

建立及設定虛擬私有雲

  1. 啟用服務聯網。

    gcloud services enable servicenetworking.googleapis.com
    
  2. 建立自訂模式的虛擬私有雲網路。

    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 範圍用於私人服務存取連線,可將您的虛擬私有雲網路與 Google 管理的網路對等互連,並在該網路中佈建 Managed Lustre 資源。這個分配範圍用於為 Managed Lustre 執行個體提供 IP,且不得與虛擬私有雲網路中的任何子網路重疊。

    每個 Managed Lustre 執行個體都需要連續的 CIDR 區塊,且前置長度至少為 23。

    建議您建立較大的 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 建立額外的子網路

如果您打算使用多個網路介面卡 (多 NIC) 匯總頻寬,則必須在虛擬私有雲網路中,為每個 NIC 建立個別的子網路。

如要使用多重 NIC,您必須使用 Compute Engine 機器類型,並將多個實體 NIC 連接至一般 VPC。附加至具有 RDMA 網路設定檔的虛擬私有雲的 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)。詳情請參閱「使用服務範圍保護執行個體」。

排解虛擬私有雲設定問題

權限遭拒,無法為服務「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."

如果您已在這個網路上建立 VPC 對等互連,但 IP 範圍不同,系統就會傳回這個錯誤。兩個可能的解決方案如下:

取代現有 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

請按照虛擬私有雲指南修改現有私人連線,新增 IP 位址範圍。

建議前置長度至少為 /20 (4096 個位址)。

後續步驟