Använda Azure Premium SSD v2-diskar på Azure Kubernetes Service
Azure Premium SSD v2-diskar erbjuder IO-intensiva företagsarbetsbelastningar, en konsekvent disksvarstid på undermillisekunder och hög IOPS och dataflöde. Prestanda (kapacitet, dataflöde och IOPS) för Premium SSD v2-diskar kan konfigureras oberoende när som helst, vilket gör det enklare för fler scenarier att bli kostnadseffektiva samtidigt som prestandabehoven uppfylls.
I den här artikeln beskrivs hur du konfigurerar ett nytt eller befintligt AKS-kluster för användning av Azure Premium SSD v2-diskar.
Innan du börjar
Innan du skapar eller uppgraderar ett AKS-kluster som kan använda Azure Premium SSD v2-diskar måste du skapa ett AKS-kluster i samma region och tillgänglighetszon som stöder Premium Storage och ansluta diskarna enligt stegen nedan.
För ett befintligt AKS-kluster kan du aktivera Premium SSD v2-diskar genom att lägga till en ny nodpool i klustret och sedan ansluta diskarna enligt stegen nedan.
Viktigt!
Azure Premium SSD v2-diskar kräver nodpooler som distribueras i regioner som stöder dessa diskar. En lista över regioner som stöds finns i Regioner som stöds av Premium SSD v2-diskar.
Begränsningar
- Azure Premium SSD v2-diskar har vissa begränsningar som du måste känna till. En fullständig lista finns i Begränsningar för Premium SSD v2.
Använda Premium SSD v2-diskar dynamiskt med en lagringsklass
Om du vill använda Premium SSD v2-diskar i en distribution eller tillståndskänslig uppsättning kan du använda en lagringsklass för dynamisk etablering.
Skapa lagringsklassen
En lagringsklass används för att definiera hur en lagringsenhet skapas dynamiskt med en beständig volym. Mer information om Kubernetes-lagringsklasser finns i Kubernetes Storage-klasser.
I det här exemplet skapar du en lagringsklass som refererar till Premium SSD v2-diskar. Skapa en fil med namnet azure-pv2-disk-sc.yaml
och kopiera i följande manifest.
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
Skapa lagringsklassen med kommandot kubectl apply och ange filen azure-pv2-disk-sc.yaml :
kubectl apply -f azure-pv2-disk-sc.yaml
Utdata från kommandot liknar följande exempel:
storageclass.storage.k8s.io/premium2-disk-sc created
Skapa ett beständigt volymanspråk
Ett beständiga volymanspråk (PVC) används för att automatiskt etablera lagring baserat på en lagringsklass. I det här fallet kan en PVC använda den tidigare skapade lagringsklassen för att skapa en ultradisk.
Skapa en fil med namnet azure-pv2-disk-pvc.yaml
och kopiera i följande manifest. Anspråket begär en disk med namnet premium2-disk
1 000 GB i storlek med ReadWriteOnce-åtkomst. Lagringsklassen premium2-disk-sc anges som lagringsklass.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: premium2-disk
spec:
accessModes:
- ReadWriteOnce
storageClassName: premium2-disk-sc
resources:
requests:
storage: 1000Gi
Skapa det beständiga volymanspråket med kommandot kubectl apply och ange filen azure-pv2-disk-pvc.yaml :
kubectl apply -f azure-pv2-disk-pvc.yaml
Utdata från kommandot liknar följande exempel:
persistentvolumeclaim/premium2-disk created
Använd den beständiga volymen
När det beständiga volymanspråket har skapats och disken har etablerats kan en podd skapas med åtkomst till disken. Följande manifest skapar en grundläggande NGINX-podd som använder det beständiga volymanspråket premium2-disk för att montera Azure-disken på sökvägen /mnt/azure
.
Skapa en fil med namnet nginx-premium2.yaml
och kopiera i följande manifest.
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
Skapa podden med kommandot kubectl apply , som du ser i följande exempel:
kubectl apply -f nginx-premium2.yaml
Utdata från kommandot liknar följande exempel:
pod/nginx-premium2 created
Nu har du en podd som körs med din Azure-disk monterad i /mnt/azure
katalogen. Den här konfigurationen visas när du inspekterar din podd via kubectl describe pod nginx-premium2
, som du ser i följande komprimerade exempel:
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
[...]
Ange IOPS- och dataflödesgränser
Indata-/utdataåtgärder per sekund (IOPS) och dataflödesgränser för Azure Premium v2 SSD-disk stöds för närvarande inte via AKS. Om du vill justera prestanda kan du använda Azure CLI-kommandot az disk update och inklusive parametrarna --disk-iops-read-write
och --disk-mbps-read-write
.
I följande exempel uppdateras diskens läs-/skriv-IOPS till 5 000 och Mbit/s till 200. För --resource-group
måste värdet vara den andra resursgruppen som skapas automatiskt för att lagra AKS-arbetsnoderna med namngivningskonventionen MC_resourcegroupname_clustername_location. Mer information finns i Varför skapas två resursgrupper med AKS?.
Värdet för parametern --name
är namnet på volymen som skapats med hjälp av StorageClass och börjar med pvc-
. Om du vill identifiera disknamnet kan du köra kubectl get pvc
eller navigera till den sekundära resursgruppen i portalen för att hitta den. Mer information finns i Hantera resurser från Azure Portal.
az disk update --subscription subscriptionName --resource-group myResourceGroup --name diskName --disk-iops-read-write=5000 --disk-mbps-read-write=200
Nästa steg
- Mer information om Premium SSD v2-diskar finns i Använda Azure Premium SSD v2-diskar.
- Mer information om metodtips för lagring finns i Metodtips för lagring och säkerhetskopior i Azure Kubernetes Service (AKS).
Azure Kubernetes Service