AKS ハイブリッドおよび Edge で Container Storage Interface (CSI) ファイル ドライバーを使用する

適用対象: AKS on Azure Local

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

AKS での CSI の概要

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

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

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

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

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

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

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

SMB ドライバーを使用する

  1. SMB ドライバーが展開されていることを確認します。 az aksarc create コマンドを使用して Kubernetes クラスターを作成すると、SMB CSI ドライバーが既定でインストールされます。 Azure portal、Azure Resource Manager (ARM) テンプレート、または Terraform を使用して AKS クラスターを作成する場合、SMB CSI ドライバーは既定ではインストールされません。 AKS クラスターで SMB ドライバーを有効にする必要があります。 既存の AKS クラスターを更新して SMB を有効にする同等の Azure CLI コマンドは次のとおりです。

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

    kubectl create secret generic smbcreds --from-literal username=$username --from-literal password=$password --from-literal domain=$domain
    
  3. 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. SMB ドライバーが展開されていることを確認します。 az aksarc create コマンドを使用して Kubernetes クラスターを作成すると、SMB CSI ドライバーが既定でインストールされます。 Azure portal、Azure Resource Manager (ARM) テンプレート、または Terraform を使用して AKS クラスターを作成する場合、SMB CSI ドライバーは既定ではインストールされません。 AKS クラスターで SMB ドライバーを有効にする必要があります。 既存の AKS クラスターを更新して SMB を有効にする同等の Azure CLI コマンドは次のとおりです。

    az aksarc update -n $aksclustername -g $resource_group --enable-nfs-driver
    
  2. 次のマニフェストを使用して 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

次のステップ