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 ドライバーを使用する
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
次のコマンドを実行して、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 ドライバーがデプロイされていることを確認します。 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
次のマニフェストを使用して、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