Verwenden von Azure Ultra Disks in Azure Kubernetes Service

Azure Ultra Disks bieten hohen Durchsatz, einen hohen IOPS-Wert und einen Datenträgerspeicher mit durchgängig geringer Latenz für zustandsbehaftete Anwendungen. Ein Hauptvorteil von Ultra Disks ist die Möglichkeit zum dynamischen Ändern der SSD-Leistung zusammen mit Ihren Workloads, ohne dass Sie Ihre Agent-Knoten neu starten müssen. Ultra Disks eignen sich für datenintensive Workloads.

In diesem Artikel wird beschrieben, wie Sie einen neuen oder vorhandenen AKS-Cluster für die Verwendung von Azure Ultra-Datenträgern konfigurieren.

Voraussetzungen

Diese Funktion kann nur bei der Clustererstellung oder bei der Erstellung eines Knotenpools festgelegt werden.

Einschränkungen

  • Azure Ultra-Datenträger erfordern Knotenpools, die in Verfügbarkeitszonen und Regionen bereitgestellt sind, die diese Datenträger unterstützen, und sie sind nur durch bestimmte VM-Serien unterstützt. Weitere Informationen finden Sie in der entsprechenden Tabelle im Abschnitt Beschränkungen für Ultra-Datenträger .
  • Ultra Disks können mit einigen Features und Funktionen wie Verfügbarkeitsgruppen oder Azure Disk Encryption nicht verwendet werden. Überprüfen Sie die Beschränkungen für Ultra-Datenträger für die aktuellsten Informationen.

Erstellen eines Clusters, der Ultra Disks verwenden kann

Erstellen Sie mithilfe der folgenden CLI-Befehle einen AKS-Cluster, der Azure-Ultra Disks verwenden kann. Verwenden Sie den --enable-ultra-ssd-Parameter, um das EnableUltraSSD-Feature festzulegen.

az aks create -g MyResourceGroup -n myAKSCluster -l westus2 --node-vm-size Standard_D2s_v3 --zones 1 2 --node-count 2 --enable-ultra-ssd

Wenn Sie Cluster ohne Unterstützung für Ultra-Datenträger erstellen möchten, lassen Sie den --enable-ultra-ssd-Parameter weg.

Aktivieren von Ultra Disks in einem vorhandenen Cluster

Sie können Ultra-Datenträger in vorhandenen Clustern aktivieren, indem Sie dem Cluster einen neuen Knotenpool hinzufügen, der Ultra-Datenträger unterstützt. Konfigurieren Sie einen neuen Knotenpool für die Verwendung von Ultra-Datenträgern, indem Sie den --enable-ultra-ssd-Parameter mit dem az aks nodepool add-Befehl verwenden.

Wenn Sie neue Knotenpools ohne Unterstützung für Ultra-Datenträger erstellen möchten, lassen Sie den --enable-ultra-ssd-Parameter weg.

Dynamisches Verwenden von Ultra Disks mit einer Speicherklasse

Zum Verwenden von Ultra Disks in Ihren Bereitstellungen oder zustandsbehafteten Konfigurationen können Sie eine Speicherklasse für die dynamische Bereitstellung verwenden.

Erstellen der Speicherklasse

Mit einer Speicherklasse wird festgelegt, wie eine Speichereinheit dynamisch in einem persistenten Volume erstellt wird. Weitere Informationen zu Kubernetes-Speicherklassen finden Sie unter Kubernetes-Speicherklassen. In diesem Beispiel erstellen Sie eine Speicherklasse, die auf Ultra-Datenträger verweist.

  1. Erstellen Sie eine Datei namens azure-ultra-disk-sc.yaml, und fügen Sie das folgende Manifest ein:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: ultra-disk-sc
    provisioner: disk.csi.azure.com # replace with "kubernetes.io/azure-disk" if aks version is less than 1.21
    volumeBindingMode: WaitForFirstConsumer # optional, but recommended if you want to wait until the pod that will use this disk is created 
    parameters:
      skuname: UltraSSD_LRS
      kind: managed
      cachingMode: None
      diskIopsReadWrite: "2000"  # minimum value: 2 IOPS/GiB 
      diskMbpsReadWrite: "320"   # minimum value: 0.032/GiB
    
  2. Erstellen Sie die Speicherklasse mit dem Befehl kubectl apply, und geben Sie dabei die Datei azure-ultra-disk-sc.yaml an.

    kubectl apply -f azure-ultra-disk-sc.yaml
    

    Ihre Ausgabe sollte in etwa wie die folgende Beispielausgabe aussehen:

    storageclass.storage.k8s.io/ultra-disk-sc created
    

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. In diesem Fall kann ein Anspruch auf ein persistentes Volume die zuvor erstellte Speicherklasse zum Erstellen einer Ultra Disk verwenden.

  1. Erstellen Sie eine Datei namens azure-ultra-disk-pvc.yaml, und fügen Sie das folgende Manifest ein:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: ultra-disk
    spec:
      accessModes:
     - ReadWriteOnce
      storageClassName: ultra-disk-sc
      resources:
        requests:
          storage: 1000Gi
    

    Der Anspruch fordert einen Datenträger namens ultra-disk mit einer Größe von 1.000 GB und ReadWriteOnce-Zugriff an. Als Speicherklasse ist ultra-disk-sc angegeben.

  2. Erstellen Sie den Anspruch des persistenten Volumes mit dem Befehl kubectl apply, und geben Sie dabei die Datei azure-ultra-disk-pvc.yaml an.

    kubectl apply -f azure-ultra-disk-pvc.yaml
    

    Ihre Ausgabe sollte in etwa wie die folgende Beispielausgabe aussehen:

    persistentvolumeclaim/ultra-disk created
    

Verwenden des persistenten Volumes

Nachdem der Anspruch auf ein persistentes Volumes erstellt und der Datenträger erfolgreich bereitgestellt wurde, kann ein Pod mit Zugriff auf den Datenträger erstellt werden. Das folgende Manifest erstellt einen grundlegenden NGINX-Pod, der den Anspruch auf das persistente Volume ultra-disk verwendet, um den Azure-Datenträger im Pfad /mnt/azure einzubinden.

  1. Erstellen Sie eine Datei namens nginx-ultra.yaml, und fügen Sie das folgende Manifest ein:

    kind: Pod
    apiVersion: v1
    metadata:
      name: nginx-ultra
    spec:
      containers:
     - name: nginx-ultra
        image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        volumeMounts:
        - mountPath: "/mnt/azure"
          name: volume
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: ultra-disk
    
  2. Erstellen Sie den Pod mit dem Befehl kubectl apply, und geben Sie dabei die Datei nginx-ultra.yaml an.

    kubectl apply -f nginx-ultra.yaml
    

    Ihre Ausgabe sollte in etwa wie die folgende Beispielausgabe aussehen:

    pod/nginx-ultra created
    

    Sie verfügen nun über einen ausgeführten Pod mit Ihrem Azure-Datenträger, der im Verzeichnis /mnt/azure eingebunden wurde.

  3. Zeigen Sie Ihre Konfigurationsdetails mit dem Befehl kubectl describe pod an, und geben Sie dabei die Datei nginx-ultra.yaml an.

    kubectl describe pod nginx-ultra
    

    Ihre Ausgabe sollte in etwa wie die folgende Beispielausgabe aussehen:

    [...]
    Volumes:
      volume:
        Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:  azure-managed-disk
        ReadOnly:   false
      default-token-smm2n:
        Type:        Secret (a volume populated by a Secret)
        SecretName:  default-token-smm2n
        Optional:    false
    [...]
    Events:
      Type    Reason                 Age   From                               Message
      ----    ------                 ----  ----                               -------
      Normal  Scheduled              2m    default-scheduler                  Successfully assigned mypod to aks-nodepool1-79590246-0
      Normal  SuccessfulMountVolume  2m    kubelet, aks-nodepool1-79590246-0  MountVolume.SetUp succeeded for volume "default-token-smm2n"
      Normal  SuccessfulMountVolume  1m    kubelet, aks-nodepool1-79590246-0  MountVolume.SetUp succeeded for volume "pvc-faf0f176-8b8d-11e8-923b-deb28c58d242"
    [...]
    

Nächste Schritte