Share via


Azure Arc で有効になっている AKS で Container Storage Interface (CSI) ファイル ドライバーを使用する

> 適用対象: AKS on Azure Stack HCI 22H2、AKS on Windows Server、AKS on Azure Stack HCI 23H2

この記事では、Azure Arc で有効になっている AKS 内の同じストレージ ボリュームに複数のノードが同時にアクセスする必要がある場合に、ファイルにコンテナー ストレージ インターフェイス (CSI) ドライバーを使用してサーバー メッセージ ブロック (SMB) または NFS 共有をマウントする方法について説明します。

AKS Arc での CSI の概要

Container Storage Interface (CSI) は、Kubernetes のコンテナー化されたワークロードに任意のブロックおよびファイル ストレージ システムを公開する標準です。 CSI を使用することで、Arc によって有効になっている AKS は、プラグインの書き込み、デプロイ、反復処理を行って、新しいストレージ システムを公開できます。 また、CSI を使用すれば、コアの Kubernetes コードに触れることなく、さらにそのリリース サイクルを待たなくても、Kubernetes で既存のコードを改善することができます。

AKS Arc によって使用されるディスクとファイルの CSI ドライバーは、 CSI 仕様に準拠したドライバーです。

AKS Arc での CSI ストレージ ドライバーのサポートにより、次の機能を使用できます。

  • Kubernetes DataDisk リソースの作成に使用できる AKS Arc ディスク。 これらは ReadWriteOnce としてマウントされるため、一度に 1 つのポッドでのみ使用できます。 複数のポッドから同時にアクセスできるストレージ ボリュームの場合は、 AKS Arc ファイルを使用します。

  • SMB または NFS 共有をポッドにマウントするために使用できる AKS Arc ファイル。 これらは ReadWriteMany としてマウントされるため、複数のノードおよびポッド間でデータを共有できます。 また、それらは PVC (永続ボリューム要求) の仕様に基づいて ReadWriteOnce としてマウントすることもできます。

ReadWriteMany CSI ドライバーを使用してファイル永続ボリュームを使用する

複数のノードで AKS Arc 内の同じストレージ ボリュームへの同時アクセスが必要な場合は、ファイルに CSI ドライバーを使用して、SMB または NFS 共有を ReadWriteMany としてマウントできます。 SMB または NFS 共有を事前にプロビジョニングする必要があります。

SMB ドライバーを使用する

  1. SMB ドライバーが展開されていることを確認します。 Azure portalまたは az aksarc create コマンドを使用して Kubernetes クラスターを作成すると、SMB CSI ドライバーが既定でインストールされます。 を使用して Kubernetes クラスターを作成する場合は、 コマンドを使用 --disable-smb-driverして、このクラスターで SMB ドライバーを az aksarc update 有効にする必要があります。

    az aksarc update -n $aksclustername -g $resource_group --enable-smb-driver
    
  1. 次のコマンドを実行して、SMB 共有にアクセスするために必要な資格情報を格納するために、Kubernetes シークレットを作成します。

    kubectl create secret generic smbcreds --from-literal username=$username --from-literal password=$password --from-literal domain=$domain
    
  2. kubectl を使用してストレージ クラスを作成し、次のマニフェストを使用して新しい SMB ストレージ クラスを作成します。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: smb-csi
    provisioner: smb.csi.akshci.com
    parameters:
       source: \\smb-server\share
       csi.storage.k8s.io/node-stage-secret-name: "smbcreds"
       csi.storage.k8s.io/node-stage-secret-namespace: "default"
    reclaimPolicy: Retain  # only Retain is supported
    volumeBindingMode: Immediate
    mountOptions:
      - dir_mode=0777
      - file_mode=0777
      - uid=1001
      - gid=1001
    

NFS ドライバーを使用する

  1. NFS ドライバーがデプロイされていることを確認します。 NFS CSI ドライバーは、Azure portalまたは az aksarc create コマンドを使用して Kubernetes クラスターを作成するときに、既定でインストールされます。 を使用して Kubernetes クラスターを作成する場合は、 コマンドを使用 --disable-nfs-driverして、このクラスターで NFS ドライバーを az aksarc update 有効にする必要があります。

    az aksarc update -n $aksclustername -g $resource_group --enable-nfs-driver
    
  1. 次のマニフェストを使用して、NFS ストレージ クラスを作成します。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: nfs-csi
    provisioner: nfs.csi.akshci.com
    parameters:
      server: nfs-server.default.svc.cluster.local # NFS server endpoint
      share: / # NFS share path
    reclaimPolicy: Retain
    volumeBindingMode: Immediate
    mountOptions:
      - hard
      - nfsvers=4.1
    

SMB または NFS ドライバーをアンインストールするには

SMB ドライバーまたは NFS ドライバーをアンインストールするには、次の Azure CLI コマンドを使用します。

az aksarc update -n $aksclustername -g $resource_group --disable-smb-driver
az aksarc update -n $aksclustername -g $resource_group --disable-nfs-driver

次のステップ