5.11. OpenStack Cinder CSI Driver Operator

5.11.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 automatic migration feature をご覧ください。

5.11.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 automatic migration を参照してください。

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

5.11.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