Verwenden von CSI-Dateitreibern (Container Storage Interface) in AKS, die von Azure Arc aktiviert sind
> Gilt für: AKS in Azure Stack HCI 22H2, AKS unter Windows Server, AKS in Azure Stack HCI 23H2
In diesem Artikel wird beschrieben, wie Sie CSI-Treiber (Container Storage Interface) für Dateien verwenden, um einen Server Message Block (SMB) oder NFS-Freigaben einzubinden, wenn mehrere Knoten gleichzeitigen Zugriff auf dasselbe Speichervolume in AKS benötigen, das von Azure Arc aktiviert ist.
Übersicht über CSI in AKS Arc
Container Storage Interface (CSI) ist ein Standard für die Bereitstellung beliebiger Block- und Dateispeichersysteme für containerisierte Workloads in Kubernetes. Mithilfe von CSI können von Arc aktivierte AKS Plug-Ins schreiben, bereitstellen und durchlaufen, um neue Speichersysteme verfügbar zu machen. Durch die Verwendung von CSI können außerdem vorhandene Speichersysteme in Kubernetes verbessert werden, ohne den Hauptcode von Kubernetes zu ändern und dann die Releasezyklen abwarten zu müssen.
Die von AKS Arc verwendeten Datenträger- und Datei-CSI-Treiber sind CSI-spezifikationskonforme Treiber.
Die CSI-Speichertreiberunterstützung in AKS Arc ermöglicht Folgendes:
AKS Arc-Datenträger, die Sie zum Erstellen einer Kubernetes DataDisk-Ressource verwenden können. Diese werden als ReadWriteOnce eingebunden. Sie sind somit nur für jeweils einen einzelnen Pod verfügbar. Verwenden Sie für Speichervolumes, auf die von mehreren Pods gleichzeitig zugegriffen werden kann, AKS Arc-Dateien.
AKS Arc-Dateien, die Sie verwenden können, um eine SMB- oder NFS-Freigabe in Pods einzubinden. Diese werden als ReadWriteManyeingebunden, sodass Sie Daten über mehrere Knoten und Pods hinweg freigeben können. Sie können basierend auf der PVC-Spezifikation (Persistent Volume Claim, Anspruch auf ein persistente Volume) auch als ReadWriteOnce eingebunden werden.
Verwenden persistenter Volumes für Dateien mithilfe von ReadWriteMany-CSI-Treibern
Wenn mehrere Knoten gleichzeitigen Zugriff auf dieselben Speichervolumes in AKS Arc benötigen, können Sie CSI-Treiber für Dateien verwenden, um SMB- oder NFS-Freigaben als ReadWriteMany bereitzustellen. Sie müssen die SMB- oder NFS-Freigaben im Voraus bereitstellen.
Verwenden von SMB-Treibern
Stellen Sie sicher, dass der SMB-Treiber bereitgestellt ist. Der SMB CSI-Treiber wird standardmäßig installiert, wenn Sie einen Kubernetes-Cluster mit dem Azure-Portal oder dem
az aksarc create
Befehl erstellen. Wenn Sie einen Kubernetes-Cluster mit--disable-smb-driver
erstellen, müssen Sie den SMB-Treiber in diesem Cluster mit demaz aksarc update
Folgenden Befehl aktivieren:az aksarc update -n $aksclustername -g $resource_group --enable-smb-driver
Erstellen Sie Kubernetes-Geheimnisse zum Speichern der Anmeldeinformationen, die für den Zugriff auf SMB-Freigaben erforderlich sind, indem Sie den folgenden Befehl ausführen:
kubectl create secret generic smbcreds --from-literal username=$username --from-literal password=$password --from-literal domain=$domain
Erstellen Sie eine Speicherklasse mit
kubectl
, um eine neue SMB-Speicherklasse mit dem folgenden Manifest zu erstellen: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
Verwenden von NFS-Treibern
Stellen Sie sicher, dass der NFS-Treiber bereitgestellt wurde. Der NFS CSI-Treiber wird standardmäßig installiert, wenn Sie einen Kubernetes-Cluster mit dem Azure-Portal oder dem
az aksarc create
Befehl erstellen. Wenn Sie einen Kubernetes-Cluster mit--disable-nfs-driver
erstellen, müssen Sie den NFS-Treiber in diesem Cluster mit demaz aksarc update
Befehl aktivieren:az aksarc update -n $aksclustername -g $resource_group --enable-nfs-driver
Erstellen Sie mithilfe des folgenden Manifests eine NFS-Speicherklasse:
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
So deinstallieren Sie SMB- oder NFS-Treiber
Verwenden Sie die folgenden Azure CLI-Befehle, um die SMB- oder NFS-Treiber zu deinstallieren:
az aksarc update -n $aksclustername -g $resource_group --disable-smb-driver
az aksarc update -n $aksclustername -g $resource_group --disable-nfs-driver