6.13. GCP PD CSI Driver Operator
6.13.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform は、Google Cloud Platform (GCP) 永続ディスク (PD) ストレージの Container Storage Interface (CSI) ドライバーを使用して永続ボリューム (PV) をプロビジョニングできます。
Container Storage Interface (CSI) Operator およびドライバーを使用する場合、永続ストレージ および CSI ボリュームの設定 を理解しておくことが推奨されます。
GCP PD ストレージアセットにマウントする CSI でプロビジョニングされた永続ボリューム (PV) を作成するには、OpenShift Container Platform はデフォルトで GCP PD CSI Driver Operator および GCP PD CSI ドライバーを openshift-cluster-csi-drivers
namespace にインストールします。
- GCP PD CSI Driver Operator: デフォルトで、Operator は PVC の作成に使用できるストレージクラスを提供します。必要に応じて、このデフォルトのストレージクラスを無効にできます (デフォルトストレージクラスの管理 を参照)。GCE Persistent Disk を使用した永続ストレージ で説明されているように、GCP PD ストレージを作成するオプションもあります。
GCP PD ドライバー: このドライバーを使用すると、GCP PD PV を作成し、マウントできます。
GCP PD CSI ドライバーは、ベアメタルおよび N4 マシンシリーズの C3 インスタンスタイプをサポートします。C3 インスタンスタイプと N4 マシンシリーズは、hyperdisk-balanced ディスクをサポートします。
OpenShift Container Platform では、GCE Persistent Disk in-tree ボリュームプラグインと同等の CSI ドライバーに自動的に移行できます。詳細は、CSI の自動移行 を参照してください。
6.13.2. ベアメタルおよび N4 マシンシリーズ用の C3 インスタンスタイプ リンクのコピーリンクがクリップボードにコピーされました!
6.13.2.1. C3 および N4 インスタンスタイプの制限 リンクのコピーリンクがクリップボードにコピーされました!
ベアメタルおよび N4 マシンシリーズの C3 インスタンスタイプに対する GCP PD CSI ドライバーのサポートには、次の制限があります。
- hyperdisk-balanced ディスクを作成する際は、ボリュームサイズを少なくとも 4Gi に設定する必要があります。OpenShift Container Platform は最小サイズに切り上げないので、正しいサイズを自分で指定する必要があります。
- ストレージプールを使用する場合、ボリュームのクローン作成はサポートされません。
- クローン作成またはサイズ変更を行うには、hyperdisk-balanced ディスクのサイズは 6Gi 以上である必要があります。
デフォルトストレージクラスは standard-csi です。
重要ストレージクラスを手動で作成する必要があります。
ストレージクラスの作成は、hyperdisk-balanced ディスクの設定 セクションのステップ 2 を参照してください。
- N2 や N4 など、異なるストレージタイプを使用する仮想マシン (VM) が混在するクラスターはサポートされていません。これは、ハイパーディスク分散ディスクがほとんどのレガシー VM で使用できないためです。同様に、N4/C3 仮想マシンでは、通常の永続ディスクは使用できません。
- c3-standard-2、c3-standard-4、n4-standard-2、および n4-standard-4 ノードを持つ GCP クラスターは、アタッチ可能な最大ディスク番号 (16) を誤って超過する可能性があります (JIRA リンク)。
- その他の制限
6.13.2.2. hyperdisk-balanced ディスクのストレージプールの概要 リンクのコピーリンクがクリップボードにコピーされました!
ハイパーディスクストレージプールは、大規模なストレージ用に Compute Engine で使用できます。ハイパーディスクストレージプールは、購入した容量、スループット、および IOPS のコレクションであり、必要に応じてアプリケーションにプロビジョニングできます。ハイパーディスクストレージプールを使用すると、プールにディスクを作成して管理し、複数のワークロードでディスクを使用できます。ディスクをまとめて管理することで、期待される容量とパフォーマンスの向上を実現しながらコストを節約できます。ハイパーディスクストレージプールに必要なストレージのみを使用することで、数百のディスクの管理から単一のストレージプールの管理に至るまでに、容量の予測や管理の複雑さを軽減できます。
ストレージプールを設定するには、hyperdisk-balanced ディスクの設定 を参照してください。
6.13.2.3. hyperdisk-balanced ディスクの設定 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- 管理者権限でクラスターにアクセスできる。
手順
hyperdisk-balanced ディスクを設定するには、次の手順を実行します。
- hyperdisk-balanced ディスクによってプロビジョニングされたアタッチ済みディスクを使用して GCP クラスターを作成します。
インストール時に hyperdisk-balanced ディスクを指定するストレージクラスを作成します。
カスタマイズによる GCP へのクラスターのインストール セクションの手順に従います。
install-config.yaml ファイルとして、次のサンプルファイルを使用します。
install-config YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記クラスター内のすべてのノードが、hyperdisk-balanced ボリュームをサポートする必要があります。hyperdisk-balanced ディスクを使用する N2 と N3 など、混合ノードを持つクラスターはサポートされていません。
Cloud Credential Operator ユーティリティーマニフェストの組み込み セクションのステップ 3 を実行した後、インストールプログラムによって作成されたマニフェストディレクトリーに次のマニフェストをコピーします。
- cluster_csi_driver.yaml - デフォルトのストレージクラスを作成しないことを指定します。
storageclass.yaml - ハイパーディスク固有のストレージクラスを作成します。
クラスター CSI ドライバーの YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- デフォルトの OpenShift Container Platform ストレージクラスの作成を無効にすることを指定します。
ストレージクラスの YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ストレージクラスの名前を指定します。この例では、
hyperdisk-sc
です。 - 2
pd.csi.storage.gke.io
は GCP の CSI プロビジョナーを指定します。- 3
- hyperdisk-balanced ディスクの使用を指定します。
- 4
- スループット値を、"Mi" 修飾子を使用して MiBps 単位で指定します。たとえば、必要なスループットが 250 MiBps の場合は、"250Mi" と指定します。値を指定しない場合、ディスクタイプのデフォルトに基づいて容量が決定されます。
- 5
- IOPS の値を修飾子なしで指定します。たとえば、7,000 IOPS が必要な場合は、"7000" と指定します。値を指定しない場合、ディスクタイプのデフォルトに基づいて容量が決定されます。
- 6
- ストレージプールを使用する場合は、使用する特定のストレージプールのリストを、projects/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME という形式で指定します。
- 7
- ストレージプールを使用する場合は、
allowedTopologies
を設定して、プロビジョニングされるボリュームのトポロジーをストレージプールが存在する場所に制限します。この例では、us-east4-c
です。
次のサンプル YAML ファイルを使用して、ハイパーディスク固有のストレージクラスを使用する永続ボリューム要求 (PVC) を作成します。
PVC YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作成した PVC を使用するデプロイメントを作成します。デプロイメントを使用すると、Pod が再起動して再スケジュールされた後でも、アプリケーションが永続ストレージにアクセスできるようになります。
- デプロイメントを作成する前に、指定されたマシンシリーズのノードプールが稼働していることを確認します。稼働していない場合は、Pod はスケジュールに失敗します。
以下の YAML ファイルの例を使用してデプロイメントを作成します。
デプロイメント YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、デプロイメントが正常に作成されたことを確認します。
oc get deployment
$ oc get deployment
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY UP-TO-DATE AVAILABLE AGE postgres 0/1 1 0 42s
NAME READY UP-TO-DATE AVAILABLE AGE postgres 0/1 1 0 42s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ハイパーディスクインスタンスがプロビジョニングを完了し、READY ステータスが表示されるまで数分かかる場合があります。
次のコマンドを実行して、PVC
my-pvc
が永続ボリューム (PV) に正常にバインドされていることを確認します。oc get pvc my-pvc
$ oc get pvc my-pvc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE my-pvc Bound pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6 2Ti RWO hyperdisk-sc <unset> 2m24s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE my-pvc Bound pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6 2Ti RWO hyperdisk-sc <unset> 2m24s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow hyperdisk-balanced ディスクの想定の設定を確認します。
gcloud compute disks list
$ gcloud compute disks list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME LOCATION LOCATION_SCOPE SIZE_GB TYPE STATUS instance-20240914-173145-boot us-central1-a zone 150 pd-standard READY instance-20240914-173145-data-workspace us-central1-a zone 100 pd-balanced READY c4a-rhel-vm us-central1-a zone 50 hyperdisk-balanced READY
NAME LOCATION LOCATION_SCOPE SIZE_GB TYPE STATUS instance-20240914-173145-boot us-central1-a zone 150 pd-standard READY instance-20240914-173145-data-workspace us-central1-a zone 100 pd-balanced READY c4a-rhel-vm us-central1-a zone 50 hyperdisk-balanced READY
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Hyperdisk-balanced ディスク。
ストレージプールを使用している場合は、次のコマンドを実行して、ボリュームがストレージクラスと PVC で指定されたとおりにプロビジョニングされていることを確認します。
gcloud compute storage-pools list-disks pool-us-east4-c --zone=us-east4-c
$ gcloud compute storage-pools list-disks pool-us-east4-c --zone=us-east4-c
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS PROVISIONED_IOPS PROVISIONED_THROUGHPUT SIZE_GB pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6 READY 3000 140 2048
NAME STATUS PROVISIONED_IOPS PROVISIONED_THROUGHPUT SIZE_GB pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6 READY 3000 140 2048
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.13.3. CSI について リンクのコピーリンクがクリップボードにコピーされました!
ストレージベンダーはこれまで Kubernetes の一部としてストレージドライバーを提供してきました。Container Storage Interface (CSI) の実装では、サードパーティーのプロバイダーは、コア Kubernetes コードを変更せずに標準のインターフェイスを使用してストレージプラグインを提供できます。
CSI Operator は、インツリーボリュームプラグインでは不可能なボリュームスナップショットなどのストレージオプションを OpenShift Container Platform ユーザーに付与します。
6.13.4. GCP PD CSI ドライバーストレージクラスパラメーター リンクのコピーリンクがクリップボードにコピーされました!
Google Cloud Platform (GCP) 永続ディスク (PD) の Container Storage Interface (CSI) ドライバーは CSI の external-provisioner
サイドカーをコントローラーとして使用します。これは、CSI ドライバーでデプロイされる別のヘルパーコンテナーです。サイドカーは、CreateVolume
操作をトリガーして永続ボリューム (PV) を管理します。
GCP PD CSI ドライバーは、csi.storage.k8s.io/fstype
パラメーターキーを使用して動的プロビジョニングをサポートします。以下の表は、OpenShift Container Platform がサポートするすべての GCP PD CSI ストレージクラスパラメーターを説明しています。
パラメーター | 値 | デフォルト | 説明 |
---|---|---|---|
|
|
| 標準の PV または solid-state-drive PV を選択できます。 ドライバーは値を検証しないため、可能なすべての値が受け入れられます。 |
|
|
| zonal またはリージョン PV を選択できます。 |
| 新規ディスクの暗号化に使用するキーの完全修飾リソース識別子。 | 空の文字列 | 顧客管理の暗号鍵 (CMEK) を使用して新規ディスクを暗号化します。 |
6.13.5. カスタムで暗号化された永続ボリュームの作成 リンクのコピーリンクがクリップボードにコピーされました!
PersistentVolumeClaim
オブジェクトの作成時に、OpenShift Container Platform は新規永続ボリューム (PV) をプロビジョニングし、PersistentVolume
オブジェクトを作成します。新規に作成された PV を暗号化することで、Google Cloud Platform (GCP) にカスタム暗号化キーを追加し、クラスター内の PV を保護することができます。
暗号化の場合、作成した新たに割り当てられる PV は、新規または既存の Google Cloud Key Management Service (KMS) キーを使用してクラスターで顧客管理の暗号鍵 (CMEK) を使用します。
前提条件
- 実行中の OpenShift Container Platform クラスターにログインしている。
- Cloud KMS キーリングとキーのバージョンを作成している。
CMEK および Cloud KMS リソースの詳細は、顧客管理の暗号鍵 (CMEK) の使用 を参照してください。
手順
カスタムで暗号化された PV を作成するには、以下の手順を実行します。
Cloud KMS キーを使用してストレージクラスを作成します。以下の例では、暗号化されたボリュームの動的プロビジョニングを有効にします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- このフィールドは、新規ディスクの暗号化に使用されるキーのリソース識別子である必要があります。値では、大文字と小文字が区別されます。キー ID の値を指定する方法は、Retrieving a resource’s ID および Getting a Cloud KMS resource ID を参照してください。
注記disk-encryption-kms-key
パラメーターは既存のストレージクラスに追加することはできません。ただし、ストレージクラスを削除し、同じ名前および異なるパラメーターセットでこれを再作成できます。これを実行する場合、既存クラスのプロビジョナーはpd.csi.storage.gke.io
である必要があります。oc
コマンドを使用して、ストレージクラスを OpenShift Container Platform クラスターにデプロイします。oc describe storageclass csi-gce-pd-cmek
$ oc describe storageclass csi-gce-pd-cmek
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 直前の手順で作成したストレージクラスオブジェクトの名前に一致する
pvc.yaml
という名前のファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記新規ストレージクラスをデフォルトとしてマークした場合は、
storageClassName
フィールドを省略できます。PVC をクラスターに適用します。
oc apply -f pvc.yaml
$ oc apply -f pvc.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PVC のステータスを取得し、これが作成され、新規にプロビジョニングされた PV にバインドされていることを確認します。
oc get pvc
$ oc get pvc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE podpvc Bound pvc-e36abf50-84f3-11e8-8538-42010a800002 10Gi RWO csi-gce-pd-cmek 9s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE podpvc Bound pvc-e36abf50-84f3-11e8-8538-42010a800002 10Gi RWO csi-gce-pd-cmek 9s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ストレージクラスで
volumeBindingMode
フィールドがWaitForFirstConsumer
に設定されている場合、これを検証する前に PVC を使用するために Pod を作成する必要があります。
CMEK で保護される PV が OpenShift Container Platform クラスターで使用できるようになります。
6.13.6. ユーザー管理型の暗号化 リンクのコピーリンクがクリップボードにコピーされました!
ユーザー管理型の暗号化機能を使用すると、インストール時に OpenShift Container Platform ノードのルートボリュームを暗号化するキーを指定でき、すべてのマネージドストレージクラスはこれらのキーを使用してプロビジョニングされたストレージボリュームを暗号化できます。install-config YAML ファイルの platform.<cloud_type>.defaultMachinePlatform
フィールドにカスタムキーを指定する必要があります。
この機能は、次のストレージタイプをサポートします。
- Amazon Web Services (AWS) Elastic Block storage (EBS)
- Microsoft Azure Disk ストレージ
- Google Cloud Platform (GCP) 永続ディスク (PD) ストレージ
- IBM Virtual Private Cloud (VPC) Block ストレージ
GCP PD のユーザー管理型の暗号化を使用したインストールの詳細は、インストール設定パラメーター を参照してください。