第6章 Container Storage Interface (CSI) の使用
6.1. CSI ボリュームの設定 リンクのコピーリンクがクリップボードにコピーされました!
Container Storage Interface (CSI) により、OpenShift Container Platform は CSI インターフェイス を永続ストレージとして実装するストレージバックエンドからストレージを使用できます。
OpenShift Container Platform 4.19 は、CSI 仕様 のバージョン 1.6.0 をサポートします。
6.1.1. CSI アーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
CSI ドライバーは通常、コンテナーイメージとして提供されます。これらのコンテナーは、実行先の OpenShift Container Platform を認識しません。OpenShift Container Platform でサポートされる CSI 互換のストレージバックエンドを使用するには、クラスター管理者は、OpenShift Container Platform とストレージドライバーの橋渡しとして機能するコンポーネントを複数デプロイする必要があります。
以下の図では、OpenShift Container Platform クラスターの Pod で実行されるコンポーネントの俯瞰図を示しています。
異なるストレージバックエンドに対して複数の CSI ドライバーを実行できます。各ドライバーには、独自の外部コントローラーのデプロイメントおよびドライバーと CSI レジストラーを含むデーモンセットが必要です。
6.1.1.1. 外部の CSI コントローラー リンクのコピーリンクがクリップボードにコピーされました!
外部の CSI コントローラーは、5 つのコンテナーを含む 1 つまたは複数の Pod を配置するデプロイメントです。
-
スナップショットコンテナーは、
VolumeSnapshot
オブジェクトおよびVolumeSnapshotContent
オブジェクトを監視し、VolumeSnapshotContent
オブジェクトの作成および削除を担当します。 -
リサイザーコンテナーは、
PersistentVolumeClaim
オブジェクトでより多くのストレージを要求した場合に、PersistentVolumeClaim
の更新を監視し、CSI エンドポイントに対してControllerExpandVolume
操作をトリガーするサイドカーコンテナーです。 -
OpenShift Container Platform からの
attach
およびdetach
の呼び出しを適切な CSI ドライバーへのControllerPublish
およびControllerUnpublish
呼び出しに変換する外部の CSI アタッチャーコンテナー。 -
OpenShift Container Platform からの
provision
およびdelete
呼び出しを適切な CSI ドライバーへのCreateVolume
およびDeleteVolume
呼び出しに変換する外部の CSI プロビジョナーコンテナー。 - CSI ドライバーコンテナー。
CSI アタッチャーおよび CSI プロビジョナーコンテナーは、Unix Domain Socket を使用して、CSI ドライバーコンテナーと通信し、CSI の通信が Pod 外に出ないようにします。CSI ドライバーは Pod 外からはアクセスできません。
通常、attach
、detach
、provision
、および delete
操作では、CSI ドライバーがストレージバックエンドに対する認証情報を使用する必要があります。CSI コントローラー Pod をインフラストラクチャーノードで実行し、コンピュートノードで致命的なセキュリティー違反が発生した場合でも認証情報がユーザープロセスに漏洩されないようにします。
外部のアタッチャーは、サードパーティーの attach
または detach
操作をサポートしない CSI ドライバーに対しても実行する必要があります。外部のアタッチャーは、CSI ドライバーに対して ControllerPublish
または ControllerUnpublish
操作を実行しません。ただし、必要な OpenShift Container Platform 割り当て API を実装できるように依然として実行する必要があります。
6.1.1.2. CSI ドライバーのデーモンセット リンクのコピーリンクがクリップボードにコピーされました!
CSI ドライバーのデーモンセットは、OpenShift Container Platform が CSI ドライバーによって提供されるストレージをノードにマウントして、永続ボリューム (PV) としてユーザーワークロード (Pod) で使用できるように、全ノードで Pod を実行します。CSI ドライバーがインストールされた Pod には、以下のコンテナーが含まれます。
-
ノード上で実行中の
openshift-node
サービスに CSI ドライバーを登録する CSI ドライバーレジストラー。このノードで実行中のopenshift-node
プロセスは、ノードで利用可能な UNIX Domain Socket を使用して CSI ドライバーに直接接続します。 - CSI ドライバー
ノードにデプロイされた CSI ドライバーには、ストレージバックエンドへの認証情報をできる限り少なく指定する必要があります。OpenShift Container Platform は、NodePublish
/NodeUnpublish
および NodeStage
/NodeUnstage
(実装されている場合) などの CSI 呼び出しのノードプラグインセットのみを使用します。
6.1.2. OpenShift Container Platform でサポートされる CSI ドライバー リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform はデフォルトで特定の CSI ドライバーをインストールし、インツリーボリュームプラグインでは不可能なユーザーストレージオプションを提供します。
これらのサポートされるストレージアセットにマウントする CSI でプロビジョニングされた永続ボリュームを作成するには、OpenShift Container Platform は必要な CSI Driver Operator、CSI ドライバー、および必要なストレージクラスをインストールします。Operator およびドライバーのデフォルト namespace の詳細は、特定の CSI Driver Operator のドキュメントを参照してください。
AWS EFS および GCP Filestore CSI ドライバーは、デフォルトではインストールされないため、手動でインストールする必要があります。AWS EFS CSI ドライバーのインストール手順は、AWS Elastic File Service CSI Driver Operator のセットアップ を参照してください。GCP Filestore CSI ドライバーのインストール手順は、Google Compute Platform Filestore CSI Driver Operator を参照してください。
次の表では、OpenShift Container Platform とともにインストールされ、OpenShift Container Platform でサポートされている CSI ドライバーと、ボリュームのスナップショットやサイズ変更など、ドライバーでサポートされている CSI 機能を説明します。
CSI ドライバーが次の表に記載されていない場合は、CSI ストレージベンダーが提供するインストール手順に従って、サポートされている CSI 機能を使用する必要があります。
CSI ドライバー | CSI ボリュームスナップショット | CSI ボリュームグループスナップショット [1] | CSI のクローン作成 | CSI のサイズ変更 | インラインの一時ボリューム |
---|---|---|---|---|---|
AWS EBS |
✅ |
|
|
✅ |
|
AWS EFS |
|
|
|
|
|
Google Compute Platform (GCP) persistent disk (PD) |
✅ |
|
✅[2] |
✅ |
|
GCP Filestore |
✅ |
|
|
✅ |
|
IBM Power® 仮想サーバーブロック |
|
|
|
✅ |
|
IBM Cloud® Block |
✅[3] |
|
|
✅[3] |
|
LVM Storage |
✅ |
|
✅ |
✅ |
|
Microsoft Azure Disk |
✅ |
|
✅ |
✅ |
|
Microsoft Azure Stack Hub |
✅ |
|
✅ |
✅ |
|
Microsoft Azure File |
✅[4] |
|
✅[4] |
✅ |
✅ |
OpenStack Cinder |
✅ |
|
✅ |
✅ |
|
OpenShift Data Foundation |
✅ |
✅ |
✅ |
✅ |
|
OpenStack Manila |
✅ |
|
|
✅ |
|
Shared Resource |
|
|
|
|
✅ |
CIFS/SMB |
|
|
✅ |
|
|
VMware vSphere |
✅[5] |
|
|
✅[6] |
|
1.
CSI ボリュームグループスナップショットは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
2.
- ストレージプールを使用する hyperdisk-balanced ディスクでは、クローン作成はサポートされていません。
3.
- オフラインスナップショットまたはサイズ変更はサポートされていません。ボリュームは、実行中の Pod にアタッチする必要があります。
4.
-
Azure ファイルのクローン作成では、NFS プロトコルはサポートされません。SMB プロトコルを使用する
azurefile-csi
ストレージクラスをサポートします。 - Azure File のクローン作成とスナップショットは、テクノロジープレビュー機能です。
Azure File CSI のクローン作成とスナップショットは、テクノロジープレビュー機能としてのみ提供されます。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
5.
- vCenter Server と ESXi の両方に、vSphere バージョン 7.0 Update 3 以降が必要です。
- ファイル共有ボリュームはサポートされません。
6.
- vSphere バージョン 7.0 Update 2 以降では、オンライン拡張がサポートされます。
6.1.3. 動的プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
永続ストレージの動的プロビジョニングは、CSI ドライバーおよび基礎となるストレージバックエンドの機能により異なります。CSI ドライバーのプロバイダーは、OpenShift Container Platform でのストレージクラスの作成方法および設定に利用でじるパラメーターに関する文書を作成する必要があります。
作成されたストレージクラスは、動的プロビジョニングを有効にするために設定できます。
手順
デフォルトのストレージクラスを作成します。これにより、特殊なストレージクラスを必要としないすべての PVC がインストールされた CSI ドライバーでプロビジョニングされます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.4. CSI ドライバーの使用例 リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、テンプレートを変更せずにデフォルトの MySQL テンプレートをインストールします。
前提条件
- CSI ドライバーがデプロイされている。
- 動的プロビジョニング用にストレージクラスが作成されている。
手順
MySQL テンプレートを作成します。
oc new-app mysql-persistent
# oc new-app mysql-persistent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
--> Deploying template "openshift/mysql-persistent" to project default ...
--> Deploying template "openshift/mysql-persistent" to project default ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pvc
# oc get pvc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mysql Bound kubernetes-dynamic-pv-3271ffcb4e1811e8 1Gi RWO cinder 3s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mysql Bound kubernetes-dynamic-pv-3271ffcb4e1811e8 1Gi RWO cinder 3s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.5. ボリュームポピュレーター リンクのコピーリンクがクリップボードにコピーされました!
ボリュームポピュレーターは、永続ボリュームクレーム (PVC) 仕様の datasource
フィールドを使用して、事前に入力されたボリュームを作成します。
ボリュームの作成は現在有効になっており、テクノロジープレビュー機能としてサポートされています。ただし、OpenShift Container Platform にはボリュームポピュレーターは同梱されていません。
ボリュームポピュレーターは、テクノロジープレビュー機能としてのみ提供されます。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
ボリュームポピュレーターの詳細は、Kubernetes ボリュームポピュレーター を参照してください。