このガイドでは、静的プロビジョニングを使用して GKE Parallelstore CSI ドライバで既存の Parallelstore インスタンスに接続する方法について説明します。これにより、既存のフルマネージド Parallelstore インスタンスに、ステートフル ワークロードのボリュームとして、制御された予測可能な方法でアクセスできます。
始める前に
始める前に、次の作業が完了していることを確認してください。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API の有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、
gcloud components update
を実行して最新のバージョンを取得する。
- 制限事項と要件については、CSI ドライバの概要をご覧ください。
- まだ作成していない場合は、Parallelstore インスタンスを作成します。
- VPC ネットワークを構成します。
- GKE Standard クラスタを使用する場合は、CSI ドライバを有効にする必要があります。
Parallelstore CSI ドライバを使用して既存の Parallelstore インスタンスにアクセスする
GKE クラスタと同じネットワーク内に Parallelstore インスタンスをすでにプロビジョニングしている場合は、次の手順で、インスタンスを参照する PersistentVolume を静的にプロビジョニングできます。
以降のセクションでは、Parallelstore CSI ドライバを使用して既存の Parallelstore インスタンスにアクセスする一般的なプロセスについて説明します。
- Parallelstore インスタンスを参照する PersistentVolume を作成します。
- PersistentVolumeClaim を使用して Volume にアクセスします。
- (省略可)サイドカー コンテナのリソースを構成します。
- ボリュームを消費する Pod を作成します。
PersistentVolume を作成する
このセクションでは、既存の Parallelstore インスタンスを参照する PersistentVolume の作成方法の例を示します。
次のコマンドを実行して 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
次のマニフェストを
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 リファレンス ドキュメントをご覧ください。
次のコマンドを実行して PersistentVolume を作成します。
kubectl apply -f parallelstore-pv.yaml
PersistentVolumeClaim を使用して Volume にアクセスする
Parallelstore CSI ドライバの StorageClass を参照するように PersistentVolumeClaim リソースを作成できます。
次のマニフェスト ファイルは、前に作成した StorageClass を参照する ReadWriteMany
アクセスモードで PersistentVolumeClaim を作成する方法の例を示しています。
次のマニフェストを
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 の仕様と一致している必要があります。
次のコマンドを実行して 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 リソースを共有できます。
次のマニフェストを
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
次のコマンドを実行して、マニフェストをクラスタに適用します。
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 ドキュメントでトラブルシューティングのページをご覧ください。
次のステップ
- Parallelstore CSI リファレンス ドキュメントを確認する。
- Parallelstore インターセプト ライブラリを使用してワークロードのパフォーマンスを向上させる方法を学習する。
- Cloud Storage から Parallelstore にデータを転送する方法を確認する。
- チュートリアルで、GKE で Keras を使用して TensorFlow モデルをトレーニングする。