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 では、OpenStack Cinder の in-tree から CSI ドライバーへの自動移行がテクノロジープレビューとして利用できます。移行が有効化されると、既存の in-tree プラグインを使用してプロビジョニングされるボリュームは自動的に OpenStack Cinder CSI ドライバーを使用するように移行されます。詳しくは、CSI の自動移行機能 をご覧ください。
5.19.2. CSI について
ストレージベンダーはこれまで Kubernetes の一部としてストレージドライバーを提供してきました。Container Storage Interface (CSI) の実装では、サードパーティーのプロバイダーは、コア Kubernetes コードを変更せずに標準のインターフェイスを使用してストレージプラグインを提供できます。
CSI Operator は、in-tree (インツリー) ボリュームプラグインでは不可能なボリュームスナップショットなどのストレージオプションを 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 プロビジョニングを有効にするには、デフォルトの in-tree(インツリー) ストレージクラスを standard-csi で上書きすることが推奨されます。または、永続ボリューム要求 (PVC) を作成し、ストレージクラスを standard-csi として指定できます。
OpenShift Container Platform では、デフォルトのストレージクラスは in-tree(インツリー)Cinder ドライバーを参照します。ただし、CSI の自動移行が有効な場合に、デフォルトのストレージクラスを使用して作成されたボリュームは実際には CSI ドライバーを使用します。
手順
以下の手順に従ってデフォルトの in-tree(インツリー) ストレージクラスを上書きし、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
関連情報