Azure Ultra Disks gebruiken op Azure Kubernetes Service

Azure-ultraschijven bieden een hoge doorvoer, een hoge IOPS en consistente schijfopslag met lage latentie voor uw stateful toepassingen. Een groot voordeel van ultraschijven is de mogelijkheid om de prestaties van de SSD dynamisch met uw workloads te wijzigen zonder dat u de agentknooppunten opnieuw hoeft op te starten. Ultraschijven zijn geschikt voor gegevensintensieve workloads.

In dit artikel wordt beschreven hoe u een nieuw of bestaand AKS-cluster configureert voor het gebruik van Azure Ultra Disks.

Voordat u begint

Deze functie kan alleen worden ingesteld bij het maken van een cluster of bij het maken van een knooppuntgroep.

Beperkingen

  • Voor Azure Ultra Disks zijn knooppuntgroepen vereist die zijn geïmplementeerd in beschikbaarheidszones en -regio's die deze schijven ondersteunen. Deze worden alleen ondersteund door specifieke VM-reeksen. Raadpleeg de bijbehorende tabel in de sectie Ultra disk limitations (Ultra disk limitations ) voor meer informatie.
  • Ultraschijven kunnen niet worden gebruikt met bepaalde functies en functionaliteit, zoals beschikbaarheidssets of Azure Disk Encryption. Bekijk de beperkingen voor Ultra-schijven voor de meest recente informatie.

Een cluster maken dat ultraschijven kan gebruiken

Maak een AKS-cluster dat gebruik kan maken van Azure Ultra Disks met behulp van de volgende CLI-opdrachten. Gebruik de --enable-ultra-ssd parameter om de EnableUltraSSD functie in te stellen.

az aks create -g MyResourceGroup -n myAKSCluster -l westus2 --node-vm-size Standard_D2s_v3 --zones 1 2 --node-count 2 --enable-ultra-ssd

Als u een cluster wilt maken zonder ultraschijfondersteuning, kunt u dit doen door de --enable-ultra-ssd parameter weg te laten.

Ultraschijven inschakelen op een bestaand cluster

U kunt ultraschijven op een bestaand cluster inschakelen door een nieuwe knooppuntgroep toe te voegen aan uw cluster die ondersteuning biedt voor ultraschijven. Configureer een nieuwe knooppuntgroep voor het gebruik van ultraschijven met behulp van de --enable-ultra-ssd parameter met de az aks nodepool add opdracht .

Als u nieuwe knooppuntgroepen wilt maken zonder ondersteuning voor ultraschijven, kunt u dit doen door de --enable-ultra-ssd parameter uit te sluiten.

Ultraschijven dynamisch gebruiken met een opslagklasse

Als u ultraschijven wilt gebruiken in uw implementaties of stateful sets, 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 maken we een opslagklasse die verwijst naar ultraschijven.

  1. Maak een bestand met de naam azure-ultra-disk-sc.yaml en kopieer het in het volgende manifest:

    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
    
  2. Maak de opslagklasse met behulp van de kubectl apply opdracht en geef het bestand op azure-ultra-disk-sc.yaml .

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

    De uitvoer moet er ongeveer uitzien als de volgende voorbeelduitvoer:

    storageclass.storage.k8s.io/ultra-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.

  1. Maak een bestand met de naam azure-ultra-disk-pvc.yaml en kopieer het in het volgende manifest:

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

    De claim vraagt een schijf met de naam ultra-disk aan die 1000 GB groot is met ReadWriteOnce-toegang . De opslagklasse ultra-disk-sc is opgegeven als de opslagklasse.

  2. Maak de permanente volumeclaim met behulp van de kubectl apply opdracht en geef uw azure-ultra-disk-pvc.yaml bestand op.

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

    De uitvoer moet er ongeveer uitzien als de volgende voorbeelduitvoer:

    persistentvolumeclaim/ultra-disk created
    

Het permanente volume gebruiken

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

  1. Maak een bestand met de naam nginx-ultra.yaml en kopieer het in het volgende manifest:

    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
    
  2. Maak de pod met behulp van kubectl apply de opdracht en geef het bestand op nginx-ultra.yaml .

    kubectl apply -f nginx-ultra.yaml
    

    De uitvoer moet er ongeveer uitzien als de volgende voorbeelduitvoer:

    pod/nginx-ultra created
    

    U hebt nu een actieve pod met uw Azure-schijf gekoppeld in de /mnt/azure map.

  3. Bekijk uw configuratiegegevens met behulp van de kubectl describe pod opdracht en geef uw nginx-ultra.yaml bestand op.

    kubectl describe pod nginx-ultra
    

    De uitvoer moet er ongeveer uitzien als de volgende voorbeelduitvoer:

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

Volgende stappen