5.16. OpenStack Cinder CSI Driver Operator

5.16.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.16.2. CSI について

ストレージベンダーはこれまで Kubernetes の一部としてストレージドライバーを提供してきました。Container Storage Interface (CSI) の実装では、サードパーティーのプロバイダーは、コア Kubernetes コードを変更せずに標準のインターフェイスを使用してストレージプラグインを提供できます。

CSI Operator は、in-tree (インツリー) ボリュームプラグインでは不可能なボリュームスナップショットなどのストレージオプションを OpenShift Container Platform ユーザーに付与します。

重要

OpenShift Container Platform は、Cider ストレージをプロビジョニングするためにデフォルトで in-tree または CSI 以外のドライバーの使用に設定されます。

今後の OpenShift Container Platform バージョンでは、既存の in-tree プラグインを使用してプロビジョニングされるボリュームは、同等の CSI ドライバーに移行される予定です。CSI 自動移行はシームレスに行ってください。移行をしても、永続ボリューム、永続ボリューム要求、ストレージクラスなどの既存の API オブジェクトを使用する方法は変更されません。移行の詳細は、CSI の自動移行 を参照してください。

完全な移行後、in-tree プラグインは最終的に OpenShift Container Platform の今後のバージョンで削除されます。

5.16.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 ストレージクラスを適用します。

  1. ストレージクラスをリスト表示します。

    $ 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

  2. 以下の例に示されるように、デフォルトストレージクラスについてアノテーション storageclass.kubernetes.io/is-default-class の値を false に変更します。

    $ oc patch storageclass standard -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}'
  3. アノテーションを追加するか、アノテーションを storageclass.kubernetes.io/is-default-class=true として変更することで、別のストレージクラスをデフォルトにします。

    $ oc patch storageclass standard-csi -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'
  4. デフォルトで 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

  5. オプション: ストレージクラスを指定することなく新規 PVC を定義できます。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: cinder-claim
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi

    特定のストレージクラスを指定しない PVC は、デフォルトのストレージクラスを使用して自動的にプロビジョニングされます。

  6. オプション: 新規ファイルを設定した後に、クラスター内にこのファイルを作成します。

    $ oc create -f cinder-claim.yaml