Freigeben über


Verwenden von CSI-Dateitreibern (Container Storage Interface) in AKS, die von Azure Arc aktiviert sind

Gilt für: AKS auf Azure Local

In diesem Artikel wird beschrieben, wie Sie Container Storage Interface (CSI)-Treiber für Dateien verwenden, um einen Server Message Block (SMB) oder NFS-Freigaben zu bereitstellen, wenn mehrere Knoten gleichzeitigen Zugriff auf dasselbe Speichervolume in AKS benötigen, die von Azure Arc aktiviert sind.

Ü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. Mit CSI können von Arc aktivierte AKS Plug-Ins schreiben, bereitstellen und durchlaufen, um neue Speichersysteme verfügbar zu machen. CSI kann auch vorhandene Komponenten in Kubernetes verbessern, ohne den Kubernetes-Kerncode berühren zu müssen und auf die Veröffentlichungszyklen zu warten.

Die von AKS Arc verwendeten Datenträger- und Datei-CSI-Treiber sind CSI-kompatible Treiber.

Mit der Unterstützung des CSI-Speichertreibers auf AKS Arc können Sie Folgendes verwenden:

  • 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, mit denen Sie eine SMB- oder NFS-Freigabe auf Pods bereitstellen können. 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 mit ReadWriteMany-CSI-Treibern

Wenn mehrere Knoten gleichzeitigen Zugriff auf dieselben Speichervolumes in AKS Arc benötigen, können Sie CSI-Treiber für Dateien zum Bereitstellen von SMB- oder NFS-Freigaben als ReadWriteMany verwenden. Sie müssen die SMB- oder NFS-Aktien im Voraus bereitstellen.

Verwenden von SMB-Treibern

  1. Stellen Sie sicher, dass der SMB-Treiber bereitgestellt wird. Der SMB-CSI-Treiber wird standardmäßig installiert, wenn Sie einen Kubernetes-Cluster mit dem az aksarc create Befehl erstellen. Wenn Sie den AKS-Cluster mithilfe des Azure-Portals, einer Arm-Vorlage (Azure Resource Manager) oder Terraform erstellen, wird der SMB CSI-Treiber nicht standardmäßig installiert. Sie müssen den SMB-Treiber im AKS-Cluster aktivieren. Der entsprechende Azure CLI-Befehl zum Aktualisieren eines vorhandenen AKS-Clusters und aktivieren SMB ist:

    az aksarc update -n $aksclustername -g $resource_group --enable-smb-driver
    
  2. 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
    
  3. 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 SMB-Treiber bereitgestellt wird. Der SMB-CSI-Treiber wird standardmäßig installiert, wenn Sie einen Kubernetes-Cluster mit dem az aksarc create Befehl erstellen. Wenn Sie den AKS-Cluster mithilfe des Azure-Portals, einer Arm-Vorlage (Azure Resource Manager) oder Terraform erstellen, wird der SMB CSI-Treiber nicht standardmäßig installiert. Sie müssen den SMB-Treiber im AKS-Cluster aktivieren. Der entsprechende Azure CLI-Befehl zum Aktualisieren eines vorhandenen AKS-Clusters und aktivieren SMB ist:

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