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 ドライバーを使用する
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
次のコマンドを実行して、SMB 共有にアクセスするために必要な資格情報を格納するために、Kubernetes シークレットを作成します。
kubectl create secret generic smbcreds --from-literal username=$username --from-literal password=$password --from-literal domain=$domain
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 ドライバーを使用する
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
次のマニフェストを使用して、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