5.19. OpenStack Cinder CSI Driver Operator
5.19.1. 概要
OpenShift Container Platform は、OpenStack Cinder の Container Storage Interface (CSI) ドライバーを使用して永続ボリューム (PV) をプロビジョニングできます。
Container Storage Interface (CSI) Operator およびドライバーを使用する場合、永続ストレージ および CSI ボリュームの設定 を理解しておくことが推奨されます。
OpenStack Cinder ストレージアセットにマウントする CSI でプロビジョニングされる PV を作成するには、OpenShift Container Platform は openshift-cluster-csi-drivers
namespace に OpenStack Cinder CSI Driver Operator および OpenStack Cinder CSI ドライバーをインストールします。
- OpenStack Cinder CSI Driver Operator は、PVC の作成に使用できる CSI ストレージクラスを提供します。必要に応じて、このデフォルトのストレージクラスを無効にできます (デフォルトストレージクラスの管理 を参照)。
- OpenStack Cinder CSI ドライバー を使用すると、OpenStack Cinder PV を作成し、マウントすることができます。
OpenShift Container Platform では、Cinder インツリーボリュームプラグインと同等の CSI ドライバーに自動的に移行できます。詳細は、CSI 自動移行を参照してください。
5.19.2. CSI について
ストレージベンダーはこれまで Kubernetes の一部としてストレージドライバーを提供してきました。Container Storage Interface (CSI) の実装では、サードパーティーのプロバイダーは、コア Kubernetes コードを変更せずに標準のインターフェイスを使用してストレージプラグインを提供できます。
CSI Operator は、インツリーボリュームプラグインでは不可能なボリュームスナップショットなどのストレージオプションを OpenShift Container Platform ユーザーに付与します。
OpenShift Container Platform は、デフォルトで CSI プラグインを使用して Cinder ストレージをプロビジョニングします。
5.19.3. OpenStack Cinder CSI をデフォルトのストレージクラスに設定する
OpenStack Cinder CSI ドライバーは、cinder.csi.openstack.org
パラメーターキーを使用して動的プロビジョニングをサポートします。
OpenShift Container Platform で OpenStack Cinder CSI プロビジョニングを有効にするには、デフォルトのインツリーストレージクラスを standard-csi
で上書きすることが推奨されます。または、永続ボリューム要求 (PVC) を作成し、ストレージクラスを "standard-csi" として指定できます。
OpenShift Container Platform では、デフォルトのストレージクラスはインツリー Cinder ドライバーを参照します。ただし、CSI の自動移行が有効な場合に、デフォルトのストレージクラスを使用して作成されたボリュームは実際には CSI ドライバーを使用します。
手順
以下の手順に従ってデフォルトのインツリーストレージクラスを上書きし、standard-csi
ストレージクラスを適用します。
ストレージクラスをリスト表示します。
$ oc get storageclass
出力例
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE standard(default) cinder.csi.openstack.org Delete WaitForFirstConsumer true 46h standard-csi kubernetes.io/cinder Delete WaitForFirstConsumer true 46h
以下の例に示されるように、デフォルトストレージクラスについてアノテーション
storageclass.kubernetes.io/is-default-class
の値をfalse
に変更します。$ oc patch storageclass standard -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}'
アノテーションを追加するか、アノテーションを
storageclass.kubernetes.io/is-default-class=true
として変更することで、別のストレージクラスをデフォルトにします。$ oc patch storageclass standard-csi -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'
デフォルトで PVC が CSI ストレージクラスを参照していることを確認します。
$ oc get storageclass
出力例
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE standard kubernetes.io/cinder Delete WaitForFirstConsumer true 46h standard-csi(default) cinder.csi.openstack.org Delete WaitForFirstConsumer true 46h
オプション: ストレージクラスを指定することなく新規 PVC を定義できます。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cinder-claim spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi
特定のストレージクラスを指定しない PVC は、デフォルトのストレージクラスを使用して自動的にプロビジョニングされます。
オプション: 新規ファイルを設定した後に、クラスター内にこのファイルを作成します。
$ oc create -f cinder-claim.yaml
関連情報