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 \
--resource-group MyResourceGroup \
--name myAKSCluster \
--location westus2 \
--node-vm-size Standard_D2s_v3 \
--zones 1 2 \
--node-count 2 \
--enable-ultra-ssd \
--generate-ssh-keys
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.
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
Erstellen Sie die Speicherklasse mit dem Befehl
kubectl apply
, und geben Sie dabei die Dateiazure-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.
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.Erstellen Sie den Anspruch des persistenten Volumes mit dem Befehl
kubectl apply
, und geben Sie dabei die Dateiazure-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.
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
Erstellen Sie den Pod mit dem Befehl
kubectl apply
, und geben Sie dabei die Dateinginx-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.Zeigen Sie Ihre Konfigurationsdetails mit dem Befehl
kubectl describe pod
an, und geben Sie dabei die Dateinginx-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
- Weitere Informationen zu Ultra Disks finden Sie unter Verwenden von Azure Ultra Disks.
- Weitere Informationen zu bewährten Methoden bei der Speicherung finden Sie unter Best Practices für Speicherung und Sicherungen in Azure Kubernetes Service (AKS).
Azure Kubernetes Service