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
- Azure SSD Premium v2-Disks weisen bestimmte Einschränkungen auf, die Sie beachten müssen. Eine vollständige Liste finden Sie unter Einschränkungen von SSD Premium-Datenträgern (v2).
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
- Weitere Informationen zu SSD Premium v2-Disks finden Sie unter Verwenden von Azure SSD Premium v2-Disks.
- Weitere Informationen zu bewährten Methoden für Speicher finden Sie unter Best Practices für Speicher und Sicherungen in Azure Kubernetes Service (AKS).
Azure Kubernetes Service