次の方法で共有


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

> 適用対象: AKS on Azure Stack HCI 22H2、AKS on Windows Server、AKS on Azure Local、バージョン 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 ドライバーが既定でインストールされます。 --disable-smb-driverを使用して Kubernetes クラスターを作成する場合は、az aksarc update コマンドを使用して、このクラスターで SMB ドライバーを有効にする必要があります。

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

    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

次のステップ