Freigeben über


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

  1. 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-drivererstellen, müssen Sie den SMB-Treiber in diesem Cluster mit dem az aksarc update Folgenden Befehl aktivieren:

    az aksarc update -n $aksclustername -g $resource_group --enable-smb-driver
    
  1. 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
    
  2. 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

  1. 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-drivererstellen, müssen Sie den NFS-Treiber in diesem Cluster mit dem az aksarc update Befehl aktivieren:

    az aksarc update -n $aksclustername -g $resource_group --enable-nfs-driver
    
  1. 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

Nächste Schritte