GKE Parallelstore CSI ドライバを使用して既存の Parallelstore インスタンスにアクセスする


Parallelstore は招待制です。Google Cloud プロジェクトで Parallelstore へのアクセス権をリクエストする場合は、営業担当者にお問い合わせください。

このガイドでは、静的プロビジョニングを使用して GKE Parallelstore CSI ドライバで既存の Parallelstore インスタンスに接続する方法について説明します。これにより、既存のフルマネージド Parallelstore インスタンスに、ステートフル ワークロードのボリュームとして、制御された予測可能な方法でアクセスできます。

始める前に

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

  • Google Kubernetes Engine API を有効にする。
  • Google Kubernetes Engine API の有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、gcloud components update を実行して最新のバージョンを取得する。

Parallelstore CSI ドライバを使用して既存の Parallelstore インスタンスにアクセスする

GKE クラスタと同じネットワーク内に Parallelstore インスタンスをすでにプロビジョニングしている場合は、次の手順で、インスタンスを参照する PersistentVolume を静的にプロビジョニングできます。

以降のセクションでは、Parallelstore CSI ドライバを使用して既存の Parallelstore インスタンスにアクセスする一般的なプロセスについて説明します。

  1. Parallelstore インスタンスを参照する PersistentVolume を作成します
  2. PersistentVolumeClaim を使用して Volume にアクセスします
  3. (省略可)サイドカー コンテナのリソースを構成します
  4. ボリュームを消費する Pod を作成します

PersistentVolume を作成する

このセクションでは、既存の Parallelstore インスタンスを参照する PersistentVolume の作成方法の例を示します。

  1. 次のコマンドを実行して Parallelstore インスタンスを探します。

    gcloud beta parallelstore instances list \
        --project=PROJECT_ID \
        --location=LOCATION
    

    次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクト ID。
    • LOCATION: クラスタを含む Compute Engine ゾーン。Parallelstore CSI ドライバにサポートされているゾーンを指定する必要があります。

    出力は次のようになります。次のステップに進む前に、Parallelstore インスタンス名IP アクセス ポイントをメモしてください。

    NAME                                                                                                     capacity  DESCRIPTION  CREATE_TIME                     UPDATE_TIME                     STATE   network  RESERVED_IP_RANGE  ACCESS_POINTS
    projects/my-project/locations/us-central1-a/instances/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563  12000                  2024-03-06T19:18:26.036463730Z  2024-03-06T19:24:44.561441556Z  ACTIVE                              10.51.110.2,10.51.110.4,10.51.110.3
    
  2. 次のマニフェストを parallelstore-pv.yaml という名前のファイルに保存します。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: parallelstore-pv
    spec:
      storageClassName: "STORAGECLASS_NAME"
      capacity:
        storage: STORAGE_SIZE
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      volumeMode: Filesystem
      csi:
        driver: parallelstore.csi.storage.gke.io
        volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container"
        volumeAttributes:
          accessPoints: ACCESS_POINTS
          network: NETWORK_NAME
    

    次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクト ID。
    • LOCATION: Parallelstore インスタンスのゾーン ロケーション。Parallelstore CSI ドライバにサポートされているゾーンを指定する必要があります。
    • INSTANCE_NAME: Parallelstore インスタンスの名前。有効な volumeHandle 値の例は "my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container". です。
    • ACCESS_POINTS: Parallelstore インスタンスのアクセス ポイント(例: 10.51.110.2,10.51.110.4,10.51.110.3)。
    • NETWORK_NAME: Parallelstore インスタンスにアクセスできる VPC ネットワーク。
    • STORAGECLASS_NAME: StorageClass の名前。これは空の文字列にできますが、PersistentVolumeClaim の仕様と一致する必要があります。
    • STORAGE_SIZE: ストレージ サイズ(例: 12000Gi)。

    PersistentVolume オブジェクトでサポートされているフィールドの一覧については、Parallelstore CSI リファレンス ドキュメントをご覧ください。

  3. 次のコマンドを実行して PersistentVolume を作成します。

    kubectl apply -f parallelstore-pv.yaml
    

PersistentVolumeClaim を使用して Volume にアクセスする

Parallelstore CSI ドライバの StorageClass を参照するように PersistentVolumeClaim リソースを作成できます。

次のマニフェスト ファイルは、前に作成した StorageClass を参照する ReadWriteMany アクセスモードで PersistentVolumeClaim を作成する方法の例を示しています。

  1. 次のマニフェストを parallelstore-pvc.yaml という名前のファイルに保存します。

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: parallelstore-pvc
      spec:
        accessModes:
          - ReadWriteMany
        storageClassName: STORAGECLASS_NAME
        volumeName: parallelstore-pv
        resources:
          requests:
            storage: STORAGE_SIZE
    

    次のように置き換えます。

    • STORAGECLASS_NAME: StorageClass の名前。PersistentVolume の仕様と一致している必要があります。
    • STORAGE_SIZE: ストレージ サイズ(例: 12000Gi)。PersistentVolume の仕様と一致している必要があります。
  2. 次のコマンドを実行して PersistentVolumeClaim を作成します。

      kubectl create -f parallelstore-pvc.yaml
    

(省略可)サイドカー コンテナのリソースを構成する

Parallelstore を利用するボリュームのワークロード Pod を作成すると、CSI ドライバはボリュームが Parallelstore インスタンスに基づいているかどうかを判断します。

ボリュームが Parallelstore ベースであることが検出された場合、またはアノテーション gke-parallelstore/volumes: "true" を指定した場合、CSI ドライバは gke-parallelstore-sidecar という名前のサイドカー コンテナを Pod に自動的に挿入します。このサイドカー コンテナが、Parallelstore インスタンスをワークロードにマウントします。

デフォルトでは、サイドカー コンテナは次のリソース リクエストで構成され、リソースの上限は設定されていません。

  • 250m CPU
  • 512 MiB のメモリ
  • 10 MiB のエフェメラル ストレージ

これらの値を上書きするには、必要に応じて次の例に示すようにアノテーション gke-parallelstore/[cpu-request|memory-request|cpu-limit|memory-limit|ephemeral-storage-request] を指定します。

apiVersion: v1
kind: Pod
metadata:
  annotations:
    gke-parallelstore/volumes: "true"
    gke-parallelstore/cpu-request: 500m
    gke-parallelstore/memory-request: 1Gi
    gke-parallelstore/ephemeral-storage-request: 500Mi
    gke-parallelstore/cpu-limit: 1000m
    gke-parallelstore/memory-limit: 2Gi
    gke-parallelstore/ephemeral-storage-limit: 1Gi

割り当てるリソースの量を決定する際は、次の点を考慮してください。

  • リクエスト値または上限値のいずれかが設定され、もう一方が設定されていない場合、GKE は両方を同じ指定値に設定します。
  • ワークロードでより高いスループットが必要な場合は、サイドカー コンテナにより多くの CPU を割り当てます。CPU が不足すると、I/O スロットリングが発生します。
  • 値「0」を使用すると、Standard クラスタのリソース上限の設定を解除できます。たとえば、gke-parallelstore/memory-limit: "0" はサイドカー コンテナのメモリ上限を削除します。これは、ワークロードに対して gke-parallelstore-sidecar で必要になるリソースの量を特定できないためで、ノード上の使用可能なすべてのリソースをサイドカーで消費できるようにする場合に便利です。

ボリュームを消費するワークロードを作成する

このセクションでは、前のセクションで作成した PersistentVolumeClaim リソースを使用する Pod を作成する方法の例を示します。

複数の Pod が同じ PersistentVolumeClaim リソースを共有できます。

  1. 次のマニフェストを my-pod.yaml という名前のファイルに保存します。

      apiVersion: v1
      kind: Pod
      metadata:
        name: my-pod
      spec:
        containers:
        - name: nginx
          image: nginx
          volumeMounts:
            - name: parallelstore-volume
              mountPath: /data
        volumes:
        - name: parallelstore-volume
          persistentVolumeClaim:
            claimName: parallelstore-pvc
    
  2. 次のコマンドを実行して、マニフェストをクラスタに適用します。

      kubectl apply -f my-pod.yaml
    

    Pod は、GKE が PersistentVolumeClaim をプロビジョニングするまで待機してから実行を開始します。完了までに数分かかることがあります。

Parallelstore CSI ドライバを管理する

このセクションでは、必要に応じて Parallelstore CSI ドライバを有効または無効にする方法について説明します。

新しいクラスタで Parallelstore CSI ドライバを有効にする

新しい Standard クラスタを作成するときに Parallelstore CSI ドライバを有効にするには、Google Cloud CLI で次のコマンドを実行します。

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --network=NETWORK_NAME \
    --addons=ParallelstoreCsiDriver \
    --cluster-version=VERSION

次のように置き換えます。

  • CLUSTER_NAME: クラスタの名前。
  • LOCATION: クラスタを含む Compute Engine ゾーン。Parallelstore CSI ドライバにサポートされているゾーンを指定する必要があります。
  • NETWORK_NAME: VPC ネットワークを構成するで作成した VPC ネットワークの名前。
  • VERSION: GKE のバージョン番号。この機能を使用するには、サポートされているバージョン番号(GKE バージョン 1.29 以降など)を指定する必要があります。または、--release-channel フラグを使用してリリース チャンネルを指定することもできます。

既存のクラスタで Parallelstore CSI ドライバを有効にする

既存の GKE Standard クラスタでドライバを有効にするには、Google Cloud CLI で次のコマンドを実行します。

gcloud container clusters update CLUSTER_NAME \
  --location=LOCATION \
  --update-addons=ParallelstoreCsiDriver=ENABLED

次のように置き換えます。

  • CLUSTER_NAME: クラスタの名前。
  • LOCATION: クラスタを含む Compute Engine ゾーン。Parallelstore CSI ドライバにサポートされているゾーンを指定する必要があります。

GKE クラスタが、VPC ネットワークを構成するで設定した VPC ネットワークで実行されていることを確認します。GKE クラスタの VPC ネットワークを確認するには、Google Cloud コンソールまたは gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION) コマンドを使用します。

Parallelstore CSI ドライバを無効にする

既存の Autopilot クラスタまたは Standard クラスタで Parallelstore CSI ドライバを無効にするには、Google Cloud CLI を使用します。

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --update-addons=ParallelstoreCsiDriver=DISABLED

次のように置き換えます。

  • CLUSTER_NAME: クラスタの名前。
  • LOCATION: クラスタを含む Compute Engine ゾーン。Parallelstore CSI ドライバにサポートされているゾーンを指定する必要があります。

Parallelstore ボリュームで fsGroup を使用する

Parallelstore CSI ドライバは、マウントされたファイル システムのルートレベル ディレクトリのグループ所有権を変更し、Pod の SecurityContext で指定されたユーザーがリクエストした fsGroup との照合をサポートしています。この機能は、GKE クラスタ バージョン 1.29.5 以降、またはバージョン 1.30.1 以降でのみサポートされます。

トラブルシューティング

トラブルシューティングのガイダンスについては、Parallelstore ドキュメントでトラブルシューティングのページをご覧ください。

次のステップ