在 Azure Arc 所啟用的 AKS 中使用容器記憶體介面 (CSI) 檔案驅動程式
> 適用於:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS、Azure 本機上的 AKS 版本 23H2
本文說明當多個節點需要同時存取 Azure Arc 所啟用的 AKS 中相同記憶體磁碟區時,如何使用容器記憶體介面 (CSI) 驅動程式來掛接伺服器消息塊 (SMB) 或 NFS 共用。
AKS Arc 中的 CSI 概觀
容器儲存體介面 (CSI) 是一種標準,可對 Kubernetes 上的容器化工作負載公開任意區塊及檔案儲存體系統。 透過使用 CSI,Arc 所啟用的 AKS 可以寫入、部署及逐一查看外掛程式,以公開新的儲存系統。 使用 CSI 也可以改善 Kubernetes 中的現有程式代碼,而不需要觸及核心 Kubernetes 程式代碼,然後等候其發行週期。
AKS Arc 所使用的磁碟和檔案 CSI 驅動程式符合 CSI 規格規範的驅動程式。
AKS Arc 上的 CSI 記憶體驅動程式支援可讓您使用:
可用來建立 Kubernetes DataDisk 資源的 AKS Arc 磁碟。 這些會掛接為 ReadWriteOnce,因此一次只能供單一 Pod 使用。 針對可同時由多個 Pod 存取的記憶體磁碟區,請使用 AKS Arc 檔案。
您可以用來將 SMB 或 NFS 共用掛接至 Pod 的 AKS Arc 檔案。 這些會掛接為 ReadWriteMany,因此您可以在多個節點和 Pod 之間共享數據。 它們也可以根據PVC(永續性磁碟區宣告)規格掛接為 ReadWriteOnce 。
使用 ReadWriteMany CSI 驅動程式使用檔案永續性磁碟區
如果多個節點需要同時存取 AKS Arc 中的相同記憶體磁碟區,您可以使用 CSI 驅動程式將 SMB 或 NFS 共用掛接為 ReadWriteMany。 您必須事先布建 SMB 或 NFS 共用。
使用SMB驅動程式
請確定已部署SMB驅動程式。 當您使用 Azure 入口網站 或
az aksarc create
命令建立 Kubernetes 叢集時,預設會安裝 SMB CSI 驅動程式。 如果您使用 建立 Kubernetes 叢集,則必須使用az aksarc update
命令,在此叢集--disable-smb-driver
上啟用 SMB 驅動程式:az aksarc update -n $aksclustername -g $resource_group --enable-smb-driver
執行下列命令,建立 Kubernetes 秘密以儲存存取 SMB 共用所需的認證:
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 入口網站 或
az aksarc create
命令建立 Kubernetes 叢集時,預設會安裝 NFS CSI 驅動程式。 如果您使用 建立 Kubernetes 叢集--disable-nfs-driver
,則必須使用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 驅動程式
使用下列 Azure CLI 命令來卸載 SMB 或 NFS 驅動程式:
az aksarc update -n $aksclustername -g $resource_group --disable-smb-driver
az aksarc update -n $aksclustername -g $resource_group --disable-nfs-driver