Dela via


Använda Azure Ultra Disks på Azure Kubernetes Service

Ultradiskar i Azure har stöd för stora dataflöden, många IOPS och korta svarstider för tillståndskänsliga appar. En stor fördel med ultradiskar är möjligheten att dynamiskt ändra prestanda för SSD-disken samtidigt som dina arbetsbelastningar utan att du behöver starta om agentnoderna. Ultradiskar är avsedda för dataintensiva arbetsbelastningar.

I den här artikeln beskrivs hur du konfigurerar ett nytt eller befintligt AKS-kluster för användning av Azure-ultradiskar.

Innan du börjar

Den här funktionen kan bara anges när klustret skapas eller när du skapar en nodpool.

Begränsningar

  • Azure-ultradiskar kräver nodpooler som distribueras i tillgänglighetszoner och regioner som stöder dessa diskar och som endast stöds av specifika VM-serier. Mer information finns i motsvarande tabell under avsnittet Begränsningar för Ultra-diskar .
  • Ultradiskar kan inte användas med vissa funktioner, till exempel tillgänglighetsuppsättningar eller Azure Disk Encryption. Granska ultradiskbegränsningarna för den senaste informationen.

Skapa ett kluster som kan använda ultradiskar

Skapa ett AKS-kluster som kan utnyttja Azure ultra Disks med hjälp av följande CLI-kommandon. Använd parametern --enable-ultra-ssd för att ange funktionen EnableUltraSSD .

az aks create \
    --resource-group MyResourceGroup \
    --name myAKSCluster \
    --location westus2 \
    --node-vm-size Standard_D2s_v3 \
    --zones 1 2 \
    --node-count 2 \
    --enable-ultra-ssd \
    --generate-ssh-keys

Om du vill skapa ett kluster utan ultradiskstöd kan du göra det genom att utelämna parametern --enable-ultra-ssd .

Aktivera ultradiskar i ett befintligt kluster

Du kan aktivera ultradiskar i ett befintligt kluster genom att lägga till en ny nodpool i klustret som stöder ultradiskar. Konfigurera en ny nodpool så att den använder ultradiskar med hjälp av parametern --enable-ultra-ssd az aks nodepool add med kommandot .

Om du vill skapa nya nodpooler utan stöd för ultradiskar kan du göra det genom att undanta parametern --enable-ultra-ssd .

Använda ultradiskar dynamiskt med en lagringsklass

Om du vill använda ultradiskar i dina distributioner eller tillståndskänsliga uppsättningar 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-lagringsklasser. I det här exemplet skapar vi en lagringsklass som refererar till ultradiskar.

  1. Skapa en fil med namnet azure-ultra-disk-sc.yaml och kopiera i följande 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. Skapa lagringsklassen kubectl apply med kommandot och ange filen azure-ultra-disk-sc.yaml .

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

    Dina utdata bör likna följande exempelutdata:

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

  1. Skapa en fil med namnet azure-ultra-disk-pvc.yaml och kopiera i följande manifest:

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

    Anspråket begär en disk med namnet ultra-disk 1 000 GB i storlek med ReadWriteOnce-åtkomst. Lagringsklassen ultra-disk-sc anges som lagringsklass.

  2. Skapa det beständiga volymanspråket kubectl apply med kommandot och ange filen azure-ultra-disk-pvc.yaml .

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

    Dina utdata bör likna följande exempelutdata:

    persistentvolumeclaim/ultra-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 med namnet ultradisk för att montera Azure-disken på sökvägen /mnt/azure.

  1. Skapa en fil med namnet nginx-ultra.yaml och kopiera i följande 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. Skapa podden med kubectl apply kommandot och ange filen nginx-ultra.yaml .

    kubectl apply -f nginx-ultra.yaml
    

    Dina utdata bör likna följande exempelutdata:

    pod/nginx-ultra created
    

    Nu har du en podd som körs med din Azure-disk monterad i /mnt/azure katalogen.

  3. Se konfigurationsinformationen kubectl describe pod med kommandot och ange filen nginx-ultra.yaml .

    kubectl describe pod nginx-ultra
    

    Dina utdata bör likna följande exempelutdata:

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

Nästa steg