Použití disků SSD úrovně Azure Premium v2 ve službě Azure Kubernetes Service

Disky SSD úrovně Azure Premium v2 nabízejí náročné vstupně-výstupní úlohy v podniku, konzistentní latenci disků v milisekundách a vysokou IOPS a propustnost. Výkon (kapacita, propustnost a IOPS) disků SSD úrovně Premium v2 se dá kdykoli nezávisle nakonfigurovat, což usnadňuje nákladově efektivní situaci, když splňuje požadavky na výkon.

Tento článek popisuje, jak nakonfigurovat nový nebo existující cluster AKS tak, aby používal disky SSD úrovně Azure Premium v2.

Než začnete

Před vytvořením nebo upgradem clusteru AKS, který dokáže používat disky SSD úrovně Azure Premium v2, je potřeba vytvořit cluster AKS ve stejné oblasti a zóně dostupnosti, která podporuje Službu Premium Storage, a připojit disky podle následujících kroků.

U existujícího clusteru AKS můžete povolit disky SSD úrovně Premium v2 tak, že do clusteru přidáte nový fond uzlů a pak připojíte disky podle následujících kroků.

Důležité

Disky SSD úrovně Azure Premium v2 vyžadují fondy uzlů nasazené v oblastech, které tyto disky podporují. Seznam podporovaných oblastí najdete v tématu Podporované oblasti disků SSD úrovně Premium v2.

Omezení

  • Disky SSD úrovně Azure Premium v2 mají určitá omezení, o kterých potřebujete vědět. Úplný seznam najdete v tématu Omezení ssd úrovně Premium v2.

Dynamické použití disků SSD úrovně Premium s třídou úložiště

Pokud chcete použít disky SSD úrovně Premium v2 v nasazení nebo stavové sadě, 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ě slouží k definování dynamického vytvoř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říte třídu úložiště, která odkazuje na disky SSD úrovně Premium v2. Vytvořte soubor s názvem azure-pv2-disk-sc.yamla zkopírujte ho v následujícím manifestu.

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

Vytvořte třídu úložiště pomocí příkazu kubectl apply a zadejte soubor azure-pv2-disk-sc.yaml :

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

Výstup příkazu vypadá podobně jako v následujícím příkladu:

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

Vytvoření deklarace trvalého svazku

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

Vytvořte soubor s názvem azure-pv2-disk-pvc.yamla zkopírujte ho v následujícím manifestu. Deklarace identity požaduje disk s názvem premium2-disk o velikosti 1000 GB s přístupem ReadWriteOnce . Třída úložiště premium2-disk-sc je určena jako třída úložiště.

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

Vytvořte trvalou deklaraci identity svazku pomocí příkazu kubectl apply a zadejte soubor azure-pv2-disk-pvc.yaml :

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

Výstup příkazu vypadá podobně jako v následujícím příkladu:

persistentvolumeclaim/premium2-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 premium2-disk k připojení disku Azure k cestě /mnt/azure.

Vytvořte soubor s názvem nginx-premium2.yamla zkopírujte ho v následujícím manifestu.

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

Vytvořte pod pomocí příkazu kubectl apply , jak je znázorněno v následujícím příkladu:

kubectl apply -f nginx-premium2.yaml

Výstup příkazu vypadá podobně jako v následujícím příkladu:

pod/nginx-premium2 created

Teď máte spuštěný pod s připojeným diskem Azure v /mnt/azure adresáři. Tuto konfiguraci můžete vidět při kontrole podu prostřednictvím kubectl describe pod nginx-premium2, jak je znázorněno v následujícím zhuštěném příkladu:

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

Nastavení limitů IOPS a propustnosti

Vstupně-výstupní operace za sekundu (IOPS) a omezení propustnosti disku SSD úrovně Azure Premium v2 se v současné době prostřednictvím AKS nepodporují. K úpravě výkonu můžete použít příkaz Azure CLI az disk update a včetně --disk-iops-read-write parametrů.--disk-mbps-read-write

Následující příklad aktualizuje vstupně-výstupní operace čtení a zápis disku na 5 000 a Mb/s na 200. Hodnota --resource-groupmusí být druhou skupinou prostředků, která se automaticky vytvoří, aby se pracovní uzly AKS ukládaly s MC_resourcegroupname_clustername_location konvence vytváření názvů. Další informace najdete v tématu Proč jsou dvě skupiny prostředků vytvořené pomocí AKS?.

Hodnota parametru --name je název svazku vytvořeného pomocí třídy StorageClass a začíná na pvc-. Pokud chcete zjistit název disku, můžete ho najít spuštěním kubectl get pvc nebo přechodem do sekundární skupiny prostředků na portálu. Další informace najdete v tématu Správa prostředků na webu Azure Portal .

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

Další kroky