Verwenden von Azure Container Storage mit Azure Elastic SAN (Preview)

Azure Container Storage ist ein cloudbasierter Dienst zum Verwalten, Bereitstellen und Orchestrieren von Volumes, der nativ für Container entwickelt wurde. Azure Elastic SAN ist eine vollständig integrierte Lösung, die die Bereitstellung, Skalierung, Verwaltung und Konfiguration eines SAN vereinfacht und gleichzeitig integrierte Cloudfunktionen wie Hochverfügbarkeit bereitstellt.

Als Vorschaufunktion können Sie Azure Container Storage für die Verwendung von Azure Elastic SAN konfigurieren. Dieser Artikel beschreibt, wie Sie diese Konfiguration vornehmen. Am Ende dieses Artikels verfügen Sie über einen Pod, der Elastic SAN als Speicher verwendet.

Voraussetzungen

  • Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

  • Für diesen Artikel ist die aktuelle Azure CLI-Version (mindestens Version 2.35.0) erforderlich. Weitere Informationen finden Sie unter Installieren der Azure-Befehlszeilenschnittstelle. Wenn Sie die Bash-Umgebung in Azure Cloud Shell nutzen, ist die neueste Version bereits installiert. Wenn Sie die Befehle nicht in Azure Cloud Shell, sondern lokal ausführen möchten, führen Sie sie mit Administratorrechten aus. Weitere Informationen finden Sie unter Erste Schritte mit Azure Cloud Shell.

  • Sie benötigen den Kubernetes-Befehlszeilenclient kubectl. Es ist bereits installiert, wenn Sie Azure Cloud Shell verwenden. Sie können ihn auch lokal installieren, indem Sie den Befehl „az aks install-cli“ ausführen.

  • Wenn Sie Azure Container Storage noch nicht installiert haben, befolgen Sie die Anweisungen im Artikel Verwenden von Azure Container Storage mit Azure Kubernetes Service.

  • Überprüfen Sie unter Azure Container Storage-Regionen, ob Ihre Zielregion unterstützt wird.

  • Stellen Sie sicher, dass Sie die Rolle Azure Container Storage-Besitzer oder Azure Container Storage-Mitwirkende für Ihr Abonnement haben. Eine dieser Rollen gewährt Berechtigungen, mit denen Azure Container Storage mit der Elastic SAN-Ressource kommunizieren kann. Um diese Änderung vorzunehmen, wechseln Sie im Azure-Portal zu Ihrer Abonnementseite. Wählen Sie Access Control (IAM) > Rollenzuweisung hinzufügen und suchen Sie auf der Registerkarte Stellenfunktion-Rollen entweder nach „Azure Container Storage-Besitzer“ oder „Azure Container Storage-Mitwirkende“. Wählen Sie Ansicht > Zuweisungen > Zuweisung hinzufügen und fügen Sie Ihr Konto hinzu.

  • Um Azure Container Storage mit Azure Elastic SAN (Preview) zu verwenden, sollte Ihr AKS-Cluster über einen Knotenpool mit mindestens drei universellen VMs, z. B. standard_d4s_v5, für die Clusterknoten mit mindestens vier virtuellen CPUs (vCPUs) verfügen.

Begrenzungen

Die folgenden Features werden derzeit nicht unterstützt, wenn Sie Azure Container Storage zum Bereitstellen und Koordinieren eines Elastic SAN verwenden.

  • Volumesnapshots
  • Erweiterung des Speicherpools

Regionale Verfügbarkeit

Azure Container Storage ist nur für eine Teilmenge der Azure-Regionen verfügbar:

  • (Afrika) Südafrika, Norden
  • (Asien-Pazifik) Australien, Osten
  • (Asien-Pazifik) Asien, Osten
  • (Asien-Pazifik) Japan, Osten
  • (Asien-Pazifik) Südkorea, Mitte
  • (Asien-Pazifik) Asien, Südosten
  • (Asien-Pazifik) Indien, Mitte
  • (Europa) Frankreich, Mitte
  • (Europa) Deutschland, Westen-Mitte
  • (Europa) Europa, Norden
  • (Europa) Europa, Westen
  • (Europa) Vereinigtes Königreich, Süden
  • (Europa) Schweden, Mitte
  • (Europa) Schweiz, Norden
  • (Naher Osten) VAE, Norden
  • (Nordamerika) USA, Osten
  • (Nordamerika) USA, Osten 2
  • (Nordamerika) USA, Westen
  • (Nordamerika) USA, Westen 2
  • (Nordamerika) USA, Westen 3
  • (Nordamerika) USA, Mitte
  • (Nordamerika) USA, Norden-Mitte
  • (Nordamerika) USA, Süden-Mitte
  • (Nordamerika) USA, Westen-Mitte
  • (Nordamerika) Kanada, Mitte
  • (Nordamerika) Kanada, Osten
  • (Südamerika) Brasilien, Süden

Erstellen und Anfügen persistenter Volumes

Führen Sie die folgenden Schritte aus, um ein persistentes Volume zu erstellen und anzufügen.

1. Erstellen eines Speicherpools

Erstellen Sie zunächst einen Speicherpool, bei dem es sich um eine logische Gruppierung von Speicher für Ihren Kubernetes-Cluster handelt, indem Sie ihn in einer YAML-Manifestdatei definieren.

Wenn Sie Azure Container Storage mithilfe der Befehle az aks create oder az aks update aktiviert haben, verfügen Sie möglicherweise bereits über einen Speicherpool. Dient kubectl get sp -n acstor zum Abrufen der Liste der Speicherpools. Wenn Sie bereits über einen Speicherpool verfügen, den Sie verwenden möchten, können Sie diesen Abschnitt überspringen und mit der Anzeige der verfügbaren Speicherklassen fortfahren.

Führen Sie die folgenden Schritte aus, um einen Speicherpool mit Azure Elastic SAN (Preview) zu erstellen.

  1. Verwenden Sie Ihren bevorzugten Text-Editor, um eine YAML-Manifestdatei wie code acstor-storagepool.yaml zu erstellen.

  2. Fügen Sie den folgenden Code ein. Der Wert des Namens für den Speicherpool kann beliebig sein. Passen Sie den Speicher an die gewünschte Speicherkapazität in Gi oder Ti an, und speichern Sie die Datei. Azure Elastic SAN unterstützt derzeit keine Größenänderung von Speicherpools.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: managed
      namespace: acstor
    spec:
      poolType:
        elasticSan: {}
      resources:
        requests: {"storage": 1Ti}
    
  3. Wenden Sie die YAML-Manifestdatei an, um den Speicherpool zu erstellen.

    kubectl apply -f acstor-storagepool.yaml 
    

    Wenn die Erstellung des Speicherpools abgeschlossen ist, wird eine Meldung wie folgt angezeigt:

    storagepool.containerstorage.azure.com/managed created
    

    Sie können diesen Befehl auch ausführen, um den Status des Speicherpools zu überprüfen. Ersetzen Sie <storage-pool-name> durch den Wert des Namens für Ihren Speicherpool. In diesem Beispiel wäre der Wert verwaltet.

    kubectl describe sp <storage-pool-name> -n acstor
    

Wenn der Speicherpool erstellt wird, erstellt Azure Container Storage unter Verwendung der Namenskonvention acstor-<storage-pool-name> eine Speicherklasse in Ihrem Namen. Außerdem wird eine Azure Elastic SAN-Ressource erstellt.

2. Anzeigen der verfügbaren Speicherklassen

Wenn der Speicherpool zur Verwendung bereit ist, müssen Sie eine Speicherklasse auswählen, um zu definieren, wie Speicher beim Erstellen persistenter Volumeansprüche und beim Bereitstellen persistenter Volumes dynamisch erstellt wird.

Führen Sie kubectl get sc aus, um die verfügbaren Speicherklassen anzuzeigen. Es wird die Speicherklasse mit dem Namen acstor-<storage-pool-name> angezeigt.

Wichtig

Verwenden Sie nicht die Speicherklasse, die als intern gekennzeichnet ist. Es handelt sich um eine interne Speicherklasse, die benötigt wird, damit Azure Container Storage funktioniert.

3. Erstellen eines Anspruchs auf ein persistentes Volume

Ein Anspruch auf ein persistentes Volume (Persistent Volume Claim, PVC) wird verwendet, um basierend auf einer Speicherklasse automatisch Speicher bereitzustellen. Führen Sie die folgenden Schritte aus, um einen PVC mit der neuen Speicherklasse zu erstellen.

  1. Verwenden Sie Ihren bevorzugten Text-Editor, um eine YAML-Manifestdatei wie code acstor-pvc.yaml zu erstellen.

  2. Fügen Sie den folgenden Code ein, und speichern Sie die Datei. Der PVC-Wert name kann beliebig sein.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: managedpvc
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: acstor-managed # replace with the name of your storage class if different
      resources:
        requests:
          storage: 100Gi
    
  3. Wenden Sie die YAML-Manifestdatei an, um den PVC zu erstellen.

    kubectl apply -f acstor-pvc.yaml
    

    Eine ähnliche Ausgabe wie die folgende sollte angezeigt werden:

    persistentvolumeclaim/managedpvc created
    

    Sie können den Status des PVC überprüfen, indem Sie den folgenden Befehl ausführen:

    kubectl describe pvc managedpvc
    

Sobald der PVC erstellt wurde, kann er von einem Pod verwendet werden.

4. Bereitstellen eines Pods und Anfügen eines persistenten Volumes

Erstellen Sie einen Pod mithilfe von FIO (Flexibler E/A-Tester) für Benchmarking und Workloadsimulation, und geben Sie einen Bereitstellungspfad für das persistente Volume an. Verwenden Sie für claimName den Wert des Namens, den Sie beim Erstellen des Anspruchs auf persistentes Volume verwendet haben.

  1. Verwenden Sie Ihren bevorzugten Text-Editor, um eine YAML-Manifestdatei wie code acstor-pod.yaml zu erstellen.

  2. Fügen Sie den folgenden Code ein, und speichern Sie die Datei.

    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod
    spec:
      nodeSelector:
        acstor.azure.com/io-engine: acstor
      volumes:
        - name: managedpv
          persistentVolumeClaim:
            claimName: managedpvc
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: managedpv
    
  3. Wenden Sie die YAML-Manifestdatei an, um den Pod bereitzustellen.

    kubectl apply -f acstor-pod.yaml
    

    Die Ausgabe sollte etwa folgendermaßen aussehen:

    pod/fiopod created
    
  4. Überprüfen Sie, ob der Pod ausgeführt wird und dass der Anspruch auf persistentes Volume erfolgreich an den Pod gebunden wurde:

    kubectl describe pod fiopod
    kubectl describe pvc managedpvc
    
  5. Überprüfen Sie FIO-Tests, um den aktuellen Status anzuzeigen:

    kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
    

Sie haben jetzt einen Pod bereitgestellt, der den Elastic SAN als Speicher verwendet. Sie können ihn auch für Ihre Kubernetes-Workloads verwenden.

Verwalten persistenter Volumes und Speicherpools

Nachdem Sie nun ein persistentes Volume erstellt haben, können Sie es nach Bedarf trennen und erneut anfügen. Sie können auch einen Speicherpool löschen.

Trennen und erneutes Anfügen eines persistenten Volumes

Um ein persistentes Volume zu trennen, löschen Sie den Pod, dem das persistente Volume angefügt ist. Ersetzen Sie <pod-name> durch den Namen des Pods, z. B. fiopod.

kubectl delete pods <pod-name>

Um ein persistentes Volume erneut anzufügen, verweisen Sie einfach auf den Namen für den Anspruch auf persistentes Volume in der YAML-Manifestdatei, wie unter Bereitstellen eines Pods und Anfügen eines persistenten Volumes beschrieben.

Um zu überprüfen, an welches persistente Volume ein Anspruch auf persistentes Volume gebunden ist, führen Sie kubectl get pvc <persistent-volume-claim-name> aus.

Löschen eines Speicherpools

Wenn Sie einen Speicherpool löschen möchten, führen Sie den folgenden Befehl aus. Ersetzen Sie <storage-pool-name> durch den Namen des Speicherpools.

kubectl delete sp -n acstor <storage-pool-name>

Weitere Informationen