このガイドでは、動的プロビジョニングを使用して、GKE で Parallelstore CSI ドライバを基盤とする新しい Kubernetes ボリュームを作成する方法について説明します。これにより、フルマネージド Parallelstore インスタンスを基盤とするストレージをオンデマンドで作成し、ステートフル ワークロードのボリュームとしてアクセスできます。
始める前に
始める前に、次の作業が完了していることを確認してください。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API の有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、
gcloud components update
を実行して最新のバージョンを取得する。
- 制限事項と要件については、CSI ドライバの概要をご覧ください。
- VPC ネットワークを構成します。
- GKE Standard クラスタを使用する場合は、CSI ドライバを有効にする必要があります。
Parallelstore CSI ドライバを使用して新しいボリュームを作成する
次のセクションでは、GKE で Parallelstore CSI ドライバを基盤とする Kubernetes Volume を作成する際の一般的なプロセスについて説明します。
- (省略可)StorageClass を作成します。
- PersistentVolumeClaim を使用して Volume にアクセスします。
- (省略可)サイドカー コンテナのリソースを構成します。
- ボリュームを消費する Pod を作成します。
(省略可)ストレージ クラスを作成する
Parallelstore CSI ドライバが有効になっている場合、GKE は Parallelstore インスタンスのプロビジョニング用に parallelstore-rwx
という名前の StorageClass を自動的に作成します。この StorageClass は、GKE クラスタと同じリージョンに Parallelstore インスタンスをプロビジョニングするように CSI ドライバに指示し、最適な I/O パフォーマンスを確保します。
必要に応じて、特定のトポロジを持つカスタム StorageClass を作成できます。方法は次のとおりです。
次の StorageClass マニフェストを
parallelstore-class.yaml
という名前のファイルに保存します。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: parallelstore-class provisioner: parallelstore.csi.storage.gke.io volumeBindingMode: Immediate reclaimPolicy: Delete allowedTopologies: - matchLabelExpressions: - key: topology.gke.io/zone values: LOCATION
次のように置き換えます。
- LOCATION: クラスタを含む Compute Engine ゾーン。Parallelstore CSI ドライバにサポートされているゾーンを指定する必要があります。
StorageClass でサポートされているフィールドの一覧については、Parallelstore CSI リファレンス ドキュメントをご覧ください。
次のコマンドを実行して StorageClass を作成します。
kubectl create -f parallelstore-class.yaml
PersistentVolumeClaim を使用して Volume にアクセスする
Parallelstore CSI ドライバの StorageClass を参照するように PersistentVolumeClaim リソースを作成できます。
次のマニフェスト ファイルは、前に作成した StorageClass を参照する ReadWriteMany
アクセスモードで PersistentVolumeClaim を作成する方法の例を示しています。
次のマニフェストを
parallelstore-pvc.yaml
という名前のファイルに保存します。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: parallelstore-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: STORAGE_SIZE storageClassName: parallelstore-class
STORAGE_SIZE は、ストレージ サイズに置き換えます(例:
12000Gi
)。値は 12,000 GiB~100,000 GiB の範囲で指定します(4,000 GiB の倍数)。次のコマンドを実行して PersistentVolumeClaim を作成します。
kubectl create -f parallelstore-pvc.yaml
(省略可)サイドカー コンテナのリソースを構成する
Parallelstore を利用するボリュームのワークロード Pod を作成すると、CSI ドライバはボリュームが Parallelstore インスタンスに基づいているかどうかを判断します。
ボリュームが Parallelstore ベースであることが検出された場合、またはアノテーション gke-parallelstore/volumes: "true"
を指定した場合、CSI ドライバは gke-parallelstore-sidecar
という名前のサイドカー コンテナを Pod に自動的に挿入します。このサイドカー コンテナが、Parallelstore インスタンスをワークロードにマウントします。
デフォルトでは、GKE は次のリソース リクエストで、リソースの上限は設定しないままサイドカー コンテナを構成します。
- 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
割り当てるリソースの量を決定する際は、次の点を考慮してください。
- リクエスト値または上限値のいずれかが設定され、もう一方が設定されていない場合、両方とも同じ指定値に設定されます。
- ワークロードでより高いスループットが必要な場合は、サイドカー コンテナにより多くの 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 は、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 モデルをトレーニングする。