5.11. Azure File CSI Driver Operator
5.11.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform は、Microsoft Azure File Storage の Container Storage Interface (CSI) ドライバーを使用して、永続ボリューム (PV) をプロビジョニングできます。
CSI Operator およびドライバーを使用する場合は、永続ストレージ および CSI ボリュームの設定 を理解しておくことが推奨されます。
Azure File ストレージアセットにマウントする CSI でプロビジョニングされた永続ボリューム (PV) を作成するには、OpenShift Container Platform は、デフォルトで Azure File CSI Driver Operator および Azure File CSI ドライバーを openshift-cluster-csi-drivers
namespace にインストールします。
-
Azure File CSI Driver Operator: 永続ボリューム要求 (PVC) の作成に使用できる
azurefile-csi
というストレージクラスを提供します。必要に応じて、このデフォルトのストレージクラスを無効にできます (デフォルトストレージクラスの管理 を参照)。 - Azure File CSI ドライバー を使用すると、Azure File PV を作成し、マウントできます。Azure File CSI ドライバーは、ストレージボリュームをオンデマンドで作成できるようにし、クラスター管理者がストレージを事前にプロビジョニングする必要がなくすことで、動的ボリュームのプロビジョニングをサポートします。
Azure File CSI Driver Operator は以下をサポートしません。
- 仮想ハードディスク (VHD)
- Server Message Block (SMB) ファイル共有に対して連邦情報処理標準 (FIPS) モードが有効になっているノードで実行。ただし、Network File System (NFS) は FIPS モードをサポートします。
サポートされる機能の詳細は、サポートされる CSI ドライバーおよび機能 を参照してください。
5.11.2. NFS のサポート リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 4.14 以降では、Network File System (NFS) を備えた Azure File Container Storage Interface (CSI) Driver Operator がサポートされていますが、次の注意事項があります。
コントロールプレーンノードにスケジュールされている Azure File NFS ボリュームを含む Pod を作成すると、マウントが拒否されます。
この問題を回避するには、コントロールプレーンノードがスケジュール可能で、Pod がワーカーノードで実行できる場合は、
nodeSelector
または Affinity を使用してワーカーノードで Pod をスケジュールします。FS グループポリシーの動作:
重要NFS を使用した Azure File CSI は、Pod によって要求された fsGroupChangePolicy を受け入れません。NFS を使用した Azure File CSI は、Pod によって要求されたポリシーに関係なく、デフォルトの OnRootMismatch FS グループポリシーを適用します。
Azure File CSI Operator は、NFS のストレージクラスを自動的に作成しません。手動で作成する必要があります。次のようなファイルを使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.11.3. CSI について リンクのコピーリンクがクリップボードにコピーされました!
ストレージベンダーはこれまで Kubernetes の一部としてストレージドライバーを提供してきました。Container Storage Interface (CSI) の実装では、サードパーティーのプロバイダーは、コア Kubernetes コードを変更せずに標準のインターフェイスを使用してストレージプラグインを提供できます。
CSI Operator は、インツリーボリュームプラグインでは不可能なボリュームスナップショットなどのストレージオプションを OpenShift Container Platform ユーザーに付与します。
5.11.4. Azure File の静的プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
静的プロビジョニングの場合、クラスター管理者は、実際のストレージの詳細を定義する永続ボリューム (PV) を作成します。その後、クラスターユーザーは、これらの PV を消費する永続ボリューム要求 (PVC) を作成できます。
前提条件
- 管理者権限を持つ OpenShift Container Platform クラスターへのアクセス
手順
Azure File の静的プロビジョニングを使用する場合:
Azure ストレージアカウントのシークレットをまだ作成していない場合は、ここで作成します。
このシークレットには、次の 2 つのキーと値のペアを含む非常に特殊な形式の Azure ストレージアカウント名とキーが含まれている必要があります。
-
azurestorageaccountname
: <storage_account_name> azurestorageaccountkey
: <account_key>azure-secret という名前のシークレットを作成するには、次のコマンドを実行します。
oc create secret generic azure-secret -n <namespace_name> --type=Opaque --from-literal=azurestorageaccountname="<storage_account_name>" --from-literal=azurestorageaccountkey="<account_key>"
oc create secret generic azure-secret -n <namespace_name> --type=Opaque --from-literal=azurestorageaccountname="<storage_account_name>" --from-literal=azurestorageaccountkey="<account_key>"
1 2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
次の YAML サンプルファイルを使用して PV を作成します。
PV YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ボリュームサイズ:
- 2
- アクセスモード: 読み取り/書き込みおよびマウントパーミッションを定義します。詳細は、関連情報 の アクセスモード を参照してください。
- 3
- 回収ポリシー: ボリュームが解放された後にボリュームをどのように処理するかをクラスターに指示します。受け入れられる値は、
Retain
、Recycle
、またはDelete
です。 - 4
- ストレージクラス名: この名前は、この特定の PV にバインドするために PVC によって使用されます。静的プロビジョニングの場合、
StorageClass
オブジェクトが存在する必要はありませんが、PV と PVC 内の名前は一致する必要があります。 - 5
- セキュリティーを強化したい場合は、このパーミッションを変更してください。
- 6
- キャッシュモード: 受け入れられる値は
none
、strict
、loose
です。デフォルトはstrict
です。 - 7
- 再接続時の競合が発生する確率を低減させるために使用します。
- 8
- CIFS クライアントがサーバーから属性情報を要求する前に、ファイルまたはディレクトリーの属性をキャッシュする時間 (秒単位)。
- 9
- サーバーへのバイト範囲ロック要求の送信を無効化し、POSIX ロックの扱いに課題を持つアプリケーションに対応します。
- 10
volumeHandle
がクラスター全体で一意であることを確認します。resource-group-name
は、ストレージアカウントが存在する Azure リソースグループです。- 11
- ファイル共有名: ファイル共有名のみを使用し、フルパスは使用しないでください。
- 12
- この手順のステップ 1 で作成したシークレットの名前を指定します。この例では、azure-secret です。
- 13
- シークレットが作成された namespace: これは、PV が消費される namespace である必要があります。
次のサンプルファイルを使用して、PV を参照する PVC を作成します。
PVC YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- PVC の名前。
- 2
- PVC の namespace。
- 3
- 前のステップで作成した PV の名前。
- 4
- ストレージクラス名: この名前は、この特定の PV にバインドするために PVC によって使用されます。静的プロビジョニングの場合、
StorageClass
オブジェクトが存在する必要はありませんが、PV と PVC 内の名前は一致する必要があります。 - 5
- アクセスモード: PVC に対して要求された読み取り/書き込みアクセスを定義します。要求は、特定のアクセスモードのストレージを要求する際にボリュームと同じ規則を使用します。詳細は、関連情報 の アクセスモード を参照してください。
- 6
- PVC サイズ。
次のコマンドを実行して、PVC が作成され、しばらくしてから
Bound
ステータスになっていることを確認します。oc get pvc <pvc-name>
$ oc get pvc <pvc-name>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- PVC の名前。
出力例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-name Bound pv-azurefile 5Gi ReadWriteMany my-sc 7m2s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-name Bound pv-azurefile 5Gi ReadWriteMany my-sc 7m2s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow