VPC ネットワークを構成する

Google Cloud Managed Lustre は Virtual Private Cloud(VPC)内で実行されます。VPC は、Compute Engine 仮想マシン(VM)インスタンスGoogle Kubernetes Engine(GKE)クラスタサーバーレス ワークロードにネットワーキング機能を提供します。

次のいずれかのネットワーク設定を使用して、Managed Lustre インスタンスをクライアント Compute Engine VM または Google Kubernetes Engine クラスタに接続できます。

  • 同じ VPC ネットワーク: Managed Lustre インスタンスとクライアント リソースを作成するときに、同じ VPC ネットワークを指定します。
  • ピアリングされた VPC ネットワーク: Network Connectivity Center(NCC)を介してピアリングされた VPC ネットワークを接続します。NCC を使用すると、複数の VPC ネットワークとオンプレミス ネットワークを一元的なハブに接続し、それらの間の接続を提供できます。NCC の設定方法については、Network Connectivity Center のドキュメントをご覧ください。

必要な権限

次の 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 ネットワークが Managed Lustre リソースがプロビジョニングされる Google 管理ネットワークとピアリングされます。この割り当てられた範囲は、Managed Lustre インスタンスに IP を提供するために使用されます。VPC ネットワーク内のサブネットと重複してはなりません。

    各 Managed Lustre インスタンスには、プレフィックス長が 23 以上の連続した CIDR ブロックが必要です。

    複数の Managed Lustre インスタンスの作成や他の Google Cloud サービスの利用を可能にするため、/20 の大きな IP 範囲を作成することをおすすめします。

    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
    

    クライアント VM または GKE クラスタが、Network Connectivity Center(NCC)を介して接続されたピアリングされた VPC ネットワークに存在する場合、両方の VPC ネットワークのファイアウォール ルールで、クライアント サブネットと割り当てられた IP 範囲($CIDR_BLOCK)間のトラフィックを許可する必要があります。次のコマンドを実行して、NCC 接続の VPC ネットワークにファイアウォール ルールを作成します。

    gcloud compute firewall-rules create PEER_FIREWALL_NAME \
      --allow=tcp:988,tcp:6988 \
      --network=PEER_NETWORK_NAME \
      --source-ranges=$CIDR_BLOCK
    
  7. プライベート サービス アクセス接続を確立します。

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

    この接続は、Managed Lustre インスタンスがプロビジョニングされている VPC ネットワークでのみ必要です。

マルチ NIC 用に追加のサブネットを作成する

複数のネットワーク インターフェース カード(マルチ NIC)を使用して帯域幅を集約する場合は、NIC ごとに VPC ネットワーク内に個別のサブネットを作成する必要があります。

マルチ 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 ピアリングがすでに作成されている場合に返されます。考えられる解決法は次の 2 つです。

既存の 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 以上(4,096 個のアドレス)にすることをおすすめします。

次のステップ