Delen via


Azure Premium SSD v2-schijven gebruiken in Azure Kubernetes Service

Azure Premium SSD v2-schijven bieden IO-intensieve bedrijfsworkloads , een consistente schijflatentie van submilliseconden en hoge IOPS en doorvoer. De prestaties (capaciteit, doorvoer en IOPS) van Premium SSD v2-schijven kunnen onafhankelijk van elkaar worden geconfigureerd, waardoor het eenvoudiger is voor meer scenario's om kostenefficiënt te zijn tijdens het voldoen aan de prestatiebehoeften.

In dit artikel wordt beschreven hoe u een nieuw of bestaand AKS-cluster configureert voor het gebruik van Azure Premium SSD v2-schijven.

Voordat u begint

Voordat u een AKS-cluster maakt of upgradet dat azure Premium SSD v2-schijven kan gebruiken, moet u een AKS-cluster maken in dezelfde regio en beschikbaarheidszone die Ondersteuning biedt voor Premium Storage en de schijven koppelen aan de volgende stappen.

Voor een bestaand AKS-cluster kunt u Premium SSD v2-schijven inschakelen door een nieuwe knooppuntgroep toe te voegen aan uw cluster en vervolgens de schijven te koppelen aan de volgende stappen.

Belangrijk

Voor Azure Premium SSD v2-schijven zijn knooppuntgroepen vereist die zijn geïmplementeerd in regio's die deze schijven ondersteunen. Zie Premium SSD v2-schijf ondersteunde regio's voor een lijst met ondersteunde regio's.

Beperkingen

  • Azure Premium SSD v2-schijven hebben bepaalde beperkingen waarvan u rekening moet houden. Zie Premium SSD v2-beperkingen voor een volledige lijst.

Premium SSD v2-schijven dynamisch gebruiken met een opslagklasse

Als u Premium SSD v2-schijven in een implementatie of stateful set wilt gebruiken, kunt u een opslagklasse gebruiken voor dynamische inrichting.

De opslagklasse maken

Een opslagklasse wordt gebruikt om te definiëren hoe een opslageenheid dynamisch wordt gemaakt met een permanent volume. Zie Kubernetes-opslagklassen voor meer informatie over Kubernetes-opslagklassen.

In dit voorbeeld maakt u een opslagklasse die verwijst naar Premium SSD v2-schijven. Maak een bestand met de naam azure-pv2-disk-sc.yamlen kopieer dit in het volgende 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

Maak de opslagklasse met de opdracht kubectl apply en geef het bestand azure-pv2-disk-sc.yaml op:

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

De uitvoer van de opdracht lijkt op het volgende voorbeeld:

storageclass.storage.k8s.io/premium2-disk-sc created

Een permanente volumeclaim maken

Een permanente volumeclaim (PVC) wordt gebruikt om automatisch opslag in te richten op basis van een opslagklasse. In dit geval kan een PVC de eerder gemaakte opslagklasse gebruiken om een ultraschijf te maken.

Maak een bestand met de naam azure-pv2-disk-pvc.yamlen kopieer dit in het volgende manifest. De claim vraagt een schijf met de naam premium2-disk 1000 GB aan met ReadWriteOnce-toegang. De premium2-schijf-sc-opslagklasse wordt opgegeven als opslagklasse.

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

Maak de permanente volumeclaim met de opdracht kubectl apply en geef het bestand azure-pv2-disk-pvc.yaml op:

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

De uitvoer van de opdracht lijkt op het volgende voorbeeld:

persistentvolumeclaim/premium2-disk created

Het permanente volume gebruiken

Zodra de permanente volumeclaim is gemaakt en de schijf is ingericht, kan er een pod worden gemaakt met toegang tot de schijf. Het volgende manifest maakt een eenvoudige NGINX-pod die gebruikmaakt van de permanente volumeclaim met de naam Premium2-schijf om de Azure-schijf aan het pad /mnt/azurete koppelen.

Maak een bestand met de naam nginx-premium2.yamlen kopieer dit in het volgende 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

Maak de pod met de opdracht kubectl apply , zoals wordt weergegeven in het volgende voorbeeld:

kubectl apply -f nginx-premium2.yaml

De uitvoer van de opdracht lijkt op het volgende voorbeeld:

pod/nginx-premium2 created

U hebt nu een actieve pod waarop uw Azure-schijf is gekoppeld in de /mnt/azure map. Deze configuratie kan worden weergegeven bij het inspecteren van uw pod via kubectl describe pod nginx-premium2, zoals wordt weergegeven in het volgende verkorte voorbeeld:

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
[...]

IOPS- en doorvoerlimieten instellen

Invoer-/uitvoerbewerkingen per seconde (IOPS) en doorvoerlimieten voor Azure Premium v2 SSD-schijf worden momenteel niet ondersteund via AKS. Als u de prestaties wilt aanpassen, kunt u de Azure CLI-opdracht az disk update en inclusief de --disk-iops-read-write en --disk-mbps-read-write parameters gebruiken.

In het volgende voorbeeld wordt de IOPS-lees-/schrijfbewerking van de schijf bijgewerkt naar 5000 en Mbps naar 200. Hiervoor --resource-groupmoet de waarde de tweede resourcegroep zijn die automatisch wordt gemaakt om de AKS-werkknooppunten op te slaan met de naamconventie MC_resourcegroupname_clustername_location. Zie Waarom zijn er twee resourcegroepen gemaakt met AKS? voor meer informatie.

De waarde voor de --name parameter is de naam van het volume dat is gemaakt met de StorageClass en begint met pvc-. Als u de naam van de schijf wilt identificeren, kunt u de schijf uitvoeren kubectl get pvc of naar de secundaire resourcegroep in de portal gaan om deze te vinden. Zie Resources beheren vanuit Azure Portal voor meer informatie.

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

Volgende stappen