Cluster Toolkit を使用して GKE に Managed Lustre をプロビジョニングする

このドキュメントでは、Cluster Toolkit を使用して Managed Lustre を GKE と統合し、AI、機械学習(ML)、ハイ パフォーマンス コンピューティング(HPC)などの要求の厳しいデータ集約型ワークロード向けに最適化された環境を作成する方法について説明します。

このドキュメントでは、Cluster Toolkit を使用して GKE クラスタと Managed Lustre インスタンスを宣言的にプロビジョニングし、Managed Lustre CSI ドライバと Kubernetes PersistentVolume リソースを自動的に構成して、クラスタでサンプル ワークロードを実行します。

このドキュメントは、Managed Lustre インスタンスを基盤とする Kubernetes コンテナ オーケストレーション機能の使用に関心のある機械学習(ML)エンジニアやデータと AI のスペシャリストを対象としています。 Google Cloud のコンテンツで使用されている一般的なロールとタスクの例の詳細については、一般的な GKE ユーザーのロールとタスクをご覧ください。

背景

このセクションでは、このドキュメントで使用されている重要なテクノロジーについて説明します。

Cluster Toolkit

Cluster Toolkit は、 Google Cloudでの AI/ML 環境と HPC 環境のデプロイと管理を簡素化するオープンソース ツールです。Cluster Toolkit は、モジュール式の宣言型ブループリントを使用して、GKE クラスタ、ネットワーク、コンピューティング アクセラレータ、高パフォーマンス ストレージのプロビジョニングを自動化します。

詳細については、Cluster Toolkit の概要をご覧ください。

Managed Lustre

Managed Lustre は、要求の厳しいワークロード向けに設計された高パフォーマンスの並列ファイル システム サービスです。Managed Lustre CSI ドライバを使用すると、標準の Kubernetes PersistentVolumeClaim(PVC)と PersistentVolume(PV)を使用して、Managed Lustre インスタンスを GKE と統合できます。このドライバは、永続的でスケーラブルな高スループット ストレージを必要とする AI/ML ワークロードや HPC ワークロードに特に有益です。

詳細については、Managed Lustre CSI ドライバについてをご覧ください。

アクセラレータの使用オプション

Flex Start と Spot VM を使用すると、必要なリソースに対してのみ料金を支払うことで、コンピューティング プロビジョニングを最適化できます。詳細については、GKE での AI/ML ワークロードのアクセラレータ使用オプションについてをご覧ください。

始める前に

作業を始める前に、次のタスクが完了していることを確認してください。

  • Google Cloud Managed Lustre API と Google Kubernetes Engine API を有効にします。
  • API を有効にする
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化します。gcloud CLI をインストール済みの場合は、gcloud components update コマンドを実行して最新のバージョンを取得します。以前のバージョンの gcloud CLI では、このドキュメントのコマンドを実行できない場合があります。

環境を準備する

  1. Cluster Toolkit を設定する。

  2. デフォルトの環境変数を設定し、デプロイ マシンの IP アドレスを取得します。

    gcloud config set project PROJECT_ID
    export PROJECT_ID=$(gcloud config get project)
    export REGION=REGION
    export ZONE=ZONE
    export DEPLOYMENT_NAME=DEPLOYMENT_NAME
    export AUTHORIZED_CIDR="$(curl -s ifconfig.me)/32"
    

    次の値を置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • REGION: デプロイのリージョン(例: us-central1)。
    • ZONE: Managed Lustre をサポートするゾーン(例: us-central1-a)。
    • DEPLOYMENT_NAME: デプロイの名前。

クラスタとストレージをデプロイする

  1. Cluster Toolkit リポジトリの examples/gke-managed-lustre.yaml ブループリントを使用してインフラストラクチャをデプロイします。

    gcluster deploy examples/gke-managed-lustre.yaml \
        --vars project_id=${PROJECT_ID},deployment_name=${DEPLOYMENT_NAME},region=${REGION},zone=${ZONE},authorized_cidr=${AUTHORIZED_CIDR}
    

    Cluster Toolkit は、VPC をプロビジョニングし、Managed Lustre インスタンスを作成し、Managed Lustre CSI ドライバが有効になっている GKE クラスタをプロビジョニングし、Kubernetes PersistentVolume と PersistentVolumeClaim を作成します。

  2. 新しいクラスタにアクセスするように kubectl を構成します。

    gcloud container clusters get-credentials ${DEPLOYMENT_NAME} \
        --zone=${ZONE} \
        --project=${PROJECT_ID}
    

Managed Lustre でワークロードを実行する

gcluster job submit コマンドを使用して、Managed Lustre ボリュームをマウントするワークロードを送信します。ジョブ送信オプションの詳細については、Cluster Toolkit ジョブ送信ガイドをご覧ください。

gcluster job submit \
    --name="test-lustre-$(date +%H%M)" \
    --cluster=${DEPLOYMENT_NAME} \
    --project=${PROJECT_ID} \
    --location=${ZONE} \
    --compute-type=n2-standard-16 \
    --image=ubuntu:latest \
    --command="df -h && echo 'Hello from Managed Lustre on GKE' > /lustre-data/hello.txt && cat /lustre-data/hello.txt" \
    --mount="gke-lustre-instance-pvc;/lustre-data;rw"

ワークロード ログと実行ステータスを検査するには、gcluster job logs コマンドを使用します。

gcluster job logs "test-lustre-$(date +%H%M)" \
    --cluster=${DEPLOYMENT_NAME} \
    --project=${PROJECT_ID} \
    --location=${ZONE}

出力は次のようになります。

Filesystem                Size  Used Avail Use% Mounted on
overlay                   193G   11G  183G   6% /
tmpfs                      64M     0   64M   0% /dev
10.8.68.5@tcp://lustrefs   35T   22M   35T   1% /lustre-data
shm                        64M     0   64M   0% /dev/shm
Hello from Managed Lustre on GKE

クリーンアップ

このドキュメントで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、Cluster Toolkit を使用してデプロイを削除します。

gcluster destroy ${DEPLOYMENT_NAME}

次のステップ