Freigeben über


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

> Gilt für: AKS auf Azure Stack HCI 22H2, AKS unter Windows Server, AKS auf Azure Local, Version 23H2

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. Die Verwendung von CSI kann auch vorhandene in Kubernetes verbessern, ohne den Kubernetes-Kerncode berühren zu müssen und dann auf die Veröffentlichungszyklen warten zu müssen.

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 von persistenten Dateien 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 Azure-Portal oder dem az aksarc create Befehl erstellen. Wenn Sie einen Kubernetes-Cluster mithilfe von --disable-smb-driver"Kubernetes" erstellen, müssen Sie den SMB-Treiber auf diesem Cluster mithilfe des az aksarc update Befehls 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 wird. 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 mithilfe von --disable-nfs-driver"Kubernetes" erstellen, müssen Sie den NFS-Treiber auf diesem Cluster mithilfe des az aksarc update Befehls 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 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