Freigeben über


Verwenden von Azure SSD Premium v2-Disks auf Azure Kubernetes Service

Azure SSD Premium SSD v2-Disks bieten E/A-intensive Unternehmensworkloads, eine konsistente Datenträgerwartezeit im Bereich Submillisekunden sowie hohe IOPS und hohen Durchsatz. Die Leistung (Kapazität, Durchsatz und IOPS) von SSD Premium v2-Datenträgern kann jederzeit unabhängig konfiguriert werden, wodurch es einfacher wird, dass eine größere Anzahl von Szenarien kosteneffizient ist, während die Leistungsanforderungen erfüllt werden.

Dieser Artikel beschreibt, wie Sie einen neuen oder vorhandenen AKS-Cluster für die Verwendung von Azure SSD Premium v2-Disks konfigurieren.

Vorbereitung

Vor dem Erstellen oder Upgraden eines AKS-Clusters, der Azure SSD Premium v2-Disks verwenden kann, müssen Sie einen AKS-Cluster in derselben Region und Verfügbarkeitszone erstellen, der Storage Premium unterstützt und die Disks gemäß den folgenden Schritten anfügen kann.

Für einen vorhandenen AKS-Cluster können Sie SSD Premium v2-Disks aktivieren, indem Sie Ihrem Cluster einen neuen Knotenpool hinzufügen und dann die Disks gemäß den folgenden Schritten anfügen.

Wichtig

Azure SSD Premium v2-Disks erfordern Knotenpools, die in Regionen bereitgestellt werden, welche diese Disks unterstützen. Eine Liste der unterstützten Regionen finden Sie unter Unterstützte Regionen für SSD Premium v2-Disks.

Einschränkungen

Dynamisches Verwenden von SSD Premium v2-Disks mit einer Speicherklasse

Um SSD Premium v2-Disks in einer Bereitstellung oder einem StatefulSet zu verwenden, 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 SSD Premium v2-Disks verweist. Erstellen Sie eine Datei namens azure-pv2-disk-sc.yaml, und fügen Sie das folgende Manifest ein.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: premium2-disk-sc
parameters:
   cachingMode: None
   skuName: PremiumV2_LRS
   DiskIOPSReadWrite: "4000"
   DiskMBpsReadWrite: "1000"
provisioner: disk.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true

Erstellen Sie die Speicherklasse mit dem Befehl kubectl apply, und geben Sie Ihre Datei azure-pv2-disk-sc.yaml an:

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

Die Ausgabe des Befehls sieht in etwa wie im folgenden Beispiel aus:

storageclass.storage.k8s.io/premium2-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.

Erstellen Sie eine Datei namens azure-pv2-disk-pvc.yaml, und fügen Sie das folgende Manifest ein. Der Anspruch fordert einen Datenträger namens premium2-disk mit einer Größe von 1.000 GB und ReadWriteOnce-Zugriff an. Als Speicherklasse ist premium2-disk-sc angegeben.

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

Erstellen Sie mit dem Befehl kubectl apply den Anspruch auf ein persistentes Volume, und geben Sie Ihre Datei azure-pv2-disk-pvc.yaml an:

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

Die Ausgabe des Befehls sieht in etwa wie im folgenden Beispiel aus:

persistentvolumeclaim/premium2-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 Basis-NGINX-Pod, welcher den Anspruch auf das persistente Volume mit Namen premium2-disk verwendet, um den Azure-Disk im Pfad /mnt/azure einzubinden.

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

kind: Pod
apiVersion: v1
metadata:
  name: nginx-premium2
spec:
  containers:
  - name: nginx-premium2
    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: premium2-disk

Erstellen Sie den Pod mit dem Befehl kubectl apply, wie im folgenden Beispiel gezeigt wird:

kubectl apply -f nginx-premium2.yaml

Die Ausgabe des Befehls sieht in etwa wie im folgenden Beispiel aus:

pod/nginx-premium2 created

Sie verfügen nun über einen ausgeführten Pod mit Ihrem Azure-Datenträger, der im Verzeichnis /mnt/azure eingebunden wurde. Diese Konfiguration wird u.U. angezeigt, wenn Sie Ihren Pod über kubectl describe pod nginx-premium2 überprüfen, wie in dem folgenden verkürzten Beispiel gezeigt wird:

kubectl describe pod nginx-premium2

[...]
Volumes:
  volume:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  premium2-disk
    ReadOnly:   false
  kube-api-access-sh59b:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/memory-pressure:NoSchedule op=Exists
                             node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason                  Age    From                     Message
  ----    ------                  ----   ----                     -------
  Normal  Scheduled               7m58s  default-scheduler        Successfully assigned default/nginx-premium2 to aks-agentpool-12254644-vmss000006
  Normal  SuccessfulAttachVolume  7m46s  attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-ff39fb64-1189-4c52-9a24-e065b855b886"
  Normal  Pulling                 7m39s  kubelet                  Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine"
  Normal  Pulled                  7m38s  kubelet                  Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine" in 1.192915667s
  Normal  Created                 7m38s  kubelet                  Created container nginx-premium2
  Normal  Started                 7m38s  kubelet                  Started container nginx-premium2
[...]

Festlegen von IOPS- und Durchsatzgrenzwerten

Eingabe-/Ausgabevorgänge pro Sekunde (Input/Output Operations Per Second, IOPS) und Durchsatzgrenzwerte für Azure SSD Premium v2-Disks werden derzeit nicht über AKS unterstützt. Um die Leistung anzupassen, können Sie den Azure CLI-Befehl az disk update verwenden und die --disk-iops-read-write- und --disk-mbps-read-write-Parameter einschließen.

Im folgenden Beispiel werden die Disk-IOPS (Lesen/Schreiben) auf 5000 und die MBit/s auf 200 aktualisiert. Für --resource-group muss der Wert die zweite Ressourcengruppe sein, die automatisch erstellt wird, um die AKS-Workerknoten mit der Namenskonvention MC_resourcegroupname_clustername_location zu speichern. Weitere Informationen finden Sie unter Warum werden zwei Ressourcengruppen mit AKS erstellt?

Der Wert für den --name-Parameter ist der Name des Volumes, das mithilfe der StorageClass erstellt wurde, und er beginnt mit pvc-. Um den Disknamen zu identifizieren, können Sie kubectl get pvc ausführen oder zur sekundären Ressourcengruppe im Portal navigieren, um ihn zu finden. Weitere Informationen finden Sie unter Verwalten von Ressourcen aus dem Azure-Portal.

az disk update --subscription subscriptionName --resource-group myResourceGroup --name diskName --disk-iops-read-write=5000 --disk-mbps-read-write=200  

Nächste Schritte