Dela via


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.yamloch 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.yamloch 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.yamloch 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-groupmå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