Použití disků Azure Ultra na Azure Kubernetes Service

Disky Azure Ultra zajišťují vysokou propustnost, vysoký počet vstupně-výstupních operací (IOPS) a představují konzistentní diskové úložiště s nízkou latencí pro stavové aplikace. Jednou z hlavních výhod disků úrovně Ultra je schopnost dynamicky měnit výkon disku SSD podle aktuálních úloh, aniž byste museli restartovat uzly agenta. Disky Úrovně Ultra jsou vhodné pro úlohy náročné na data.

Tento článek popisuje, jak nakonfigurovat nový nebo existující cluster AKS tak, aby používal disky Azure Ultra.

Než začnete

Tuto funkci je možné nastavit pouze při vytváření clusteru nebo při vytváření fondu uzlů.

Omezení

  • Disky Azure ultra vyžadují fondy uzlů nasazené v zónách dostupnosti a oblastech, které tyto disky podporují, a podporují je jenom konkrétní řady virtuálních počítačů. Další informace najdete v odpovídající tabulce v části Omezení disků úrovně Ultra .
  • Disky Úrovně Ultra se nedají používat s některými funkcemi, jako jsou skupiny dostupnosti nebo Azure Disk Encryption. Nejnovější informace najdete v tématu Omezení disků Úrovně Ultra .

Vytvoření clusteru, který může používat disky úrovně Ultra

Pomocí následujících příkazů rozhraní příkazového řádku vytvořte cluster AKS, který dokáže využívat disky Azure Ultra. Pomocí parametru --enable-ultra-ssd nastavte EnableUltraSSD funkci.

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

Pokud chcete vytvořit cluster bez podpory disků úrovně Ultra, můžete to udělat vynecháním parametru --enable-ultra-ssd .

Povolení disků úrovně Ultra v existujícím clusteru

Disky úrovně Ultra můžete povolit v existujícím clusteru přidáním nového fondu uzlů do clusteru, který podporuje disky úrovně Ultra. Pomocí parametru --enable-ultra-ssd s az aks nodepool add příkazem nakonfigurujte nový fond uzlů tak, aby používal disky úrovně Ultra.

Pokud chcete vytvořit nové fondy uzlů bez podpory disků úrovně Ultra, můžete to udělat vyloučením parametru --enable-ultra-ssd .

Dynamické používání disků úrovně Ultra spolu s třídou úložiště

Pokud chcete ve svých nasazeních nebo stavových sadách používat disky úrovně Ultra, můžete k dynamickému zřizování použít třídu úložiště.

Vytvoření třídy úložiště

Třída úložiště se používá k definování dynamického vytváření jednotky úložiště s trvalým svazkem. Další informace o třídách úložiště Kubernetes najdete v tématu Třídy úložiště Kubernetes. V tomto příkladu vytvoříme třídu úložiště, která odkazuje na disky úrovně Ultra.

  1. Vytvořte soubor s názvem azure-ultra-disk-sc.yaml a zkopírujte ho v následujícím manifestu:

    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. Pomocí příkazu vytvořte třídu kubectl apply úložiště a zadejte soubor azure-ultra-disk-sc.yaml .

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

    Výstup by se měl podobat následujícímu příkladu výstupu:

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

Vytvoření trvalé deklarace identity svazku

K automatickému zřizování úložiště na základě třídy úložiště se používá trvalá deklarace identity svazku (PVC). V tomto případě může PVC použít dříve vytvořenou třídu úložiště k vytvoření disku úrovně Ultra.

  1. Vytvořte soubor s názvem azure-ultra-disk-pvc.yaml a zkopírujte ho v následujícím manifestu:

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

    Deklarace identity požádá o disk s názvem ultra-disk o velikosti 1000 GB s přístupem ReadWriteOnce . Třída úložiště ultra-disk-sc je určena jako třída úložiště.

  2. Pomocí příkazu vytvořte trvalou deklaraci identity svazku kubectl apply a zadejte soubor azure-ultra-disk-pvc.yaml .

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

    Výstup by se měl podobat následujícímu příkladu výstupu:

    persistentvolumeclaim/ultra-disk created
    

Použití trvalého svazku

Po vytvoření deklarace trvalého svazku a úspěšném zřízení disku je možné vytvořit pod s přístupem k disku. Následující manifest vytvoří základní pod NGINX, který používá deklaraci trvalého svazku s názvem ultra-disk k připojení disku Azure k cestě /mnt/azure.

  1. Vytvořte soubor s názvem nginx-ultra.yaml a zkopírujte ho v následujícím manifestu:

    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. Vytvořte pod pomocí kubectl apply příkazu a zadejte soubor nginx-ultra.yaml .

    kubectl apply -f nginx-ultra.yaml
    

    Výstup by se měl podobat následujícímu příkladu výstupu:

    pod/nginx-ultra created
    

    Teď máte spuštěný pod s diskem Azure připojeným v adresáři /mnt/azure .

  3. Pomocí příkazu zobrazte podrobnosti o kubectl describe pod konfiguraci a zadejte soubor nginx-ultra.yaml .

    kubectl describe pod nginx-ultra
    

    Výstup by se měl podobat následujícímu příkladu výstupu:

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

Další kroky