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 のストレージクラスを自動的に作成しません。手動で作成する必要があります。次のようなファイルを使用します。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <storage-class-name> 
    1
    
    provisioner: file.csi.azure.com 
    2
    
    parameters:
      protocol: nfs 
    3
    
      skuName: Premium_LRS  # available values: Premium_LRS, Premium_ZRS
    mountOptions:
      - nconnect=4
    Copy to Clipboard Toggle word wrap
    1
    ストレージクラス名:
    2
    Azure File CSI プロバイダーを指定します。
    3
    ストレージバックエンドプロトコルとして NFS を指定します。

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 の静的プロビジョニングを使用する場合:

  1. 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>" 
      1
       
      2
      Copy to Clipboard Toggle word wrap
      1
      <namespace_name> は、PV が消費される namespace に設定します。
      2
      <storage_account_name><account_key> の値を指定します。
  2. 次の YAML サンプルファイルを使用して PV を作成します。

    PV YAML ファイルの例

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: file.csi.azure.com
      name: pv-azurefile
    spec:
      capacity:
        storage: 5Gi 
    1
    
      accessModes:
        - ReadWriteMany 
    2
    
      persistentVolumeReclaimPolicy: Retain 
    3
    
      storageClassName: <sc-name> 
    4
    
      mountOptions:
        - dir_mode=0777  
    5
    
        - file_mode=0777
        - uid=0
        - gid=0
        - cache=strict  
    6
    
        - nosharesock  
    7
    
        - actimeo=30  
    8
    
        - nobrl  
    9
    
      csi:
        driver: file.csi.azure.com
        volumeHandle: "{resource-group-name}#{account-name}#{file-share-name}" 
    10
    
        volumeAttributes:
          shareName: EXISTING_FILE_SHARE_NAME  
    11
    
        nodeStageSecretRef:
          name: azure-secret 
    12
    
          namespace: <my-namespace> 
    13
    Copy to Clipboard Toggle word wrap

    1
    ボリュームサイズ:
    2
    アクセスモード: 読み取り/書き込みおよびマウントパーミッションを定義します。詳細は、関連情報アクセスモード を参照してください。
    3
    回収ポリシー: ボリュームが解放された後にボリュームをどのように処理するかをクラスターに指示します。受け入れられる値は、RetainRecycle、または Delete です。
    4
    ストレージクラス名: この名前は、この特定の PV にバインドするために PVC によって使用されます。静的プロビジョニングの場合、StorageClass オブジェクトが存在する必要はありませんが、PV と PVC 内の名前は一致する必要があります。
    5
    セキュリティーを強化したい場合は、このパーミッションを変更してください。
    6
    キャッシュモード: 受け入れられる値は nonestrictloose です。デフォルトは strict です。
    7
    再接続時の競合が発生する確率を低減させるために使用します。
    8
    CIFS クライアントがサーバーから属性情報を要求する前に、ファイルまたはディレクトリーの属性をキャッシュする時間 (秒単位)。
    9
    サーバーへのバイト範囲ロック要求の送信を無効化し、POSIX ロックの扱いに課題を持つアプリケーションに対応します。
    10
    volumeHandle がクラスター全体で一意であることを確認します。resource-group-name は、ストレージアカウントが存在する Azure リソースグループです。
    11
    ファイル共有名: ファイル共有名のみを使用し、フルパスは使用しないでください。
    12
    この手順のステップ 1 で作成したシークレットの名前を指定します。この例では、azure-secret です。
    13
    シークレットが作成された namespace: これは、PV が消費される namespace である必要があります。
  3. 次のサンプルファイルを使用して、PV を参照する PVC を作成します。

    PVC YAML ファイルの例

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: <pvc-name> 
    1
    
      namespace: <my-namespace> 
    2
    
    spec:
      volumeName: pv-azurefile 
    3
    
      storageClassName: <sc-name> 
    4
    
      accessModes:
        - ReadWriteMany 
    5
    
      resources:
        requests:
          storage: 5Gi 
    6
    Copy to Clipboard Toggle word wrap

    1
    PVC の名前。
    2
    PVC の namespace。
    3
    前のステップで作成した PV の名前。
    4
    ストレージクラス名: この名前は、この特定の PV にバインドするために PVC によって使用されます。静的プロビジョニングの場合、StorageClass オブジェクトが存在する必要はありませんが、PV と PVC 内の名前は一致する必要があります。
    5
    アクセスモード: PVC に対して要求された読み取り/書き込みアクセスを定義します。要求は、特定のアクセスモードのストレージを要求する際にボリュームと同じ規則を使用します。詳細は、関連情報アクセスモード を参照してください。
    6
    PVC サイズ。
  4. 次のコマンドを実行して、PVC が作成され、しばらくしてから Bound ステータスになっていることを確認します。

    $ oc get pvc <pvc-name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    PVC の名前。

    出力例

    NAME       STATUS    VOLUME         CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    pvc-name   Bound     pv-azurefile   5Gi        ReadWriteMany  my-sc          7m2s
    Copy to Clipboard Toggle word wrap

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat