Korzystanie z dysków Platformy Azure w warstwie Ultra na Azure Kubernetes Service

Dyski w warstwie Ultra platformy Azure oferują magazyn danych na dysku z wysoką przepływnością, dużą liczbą operacji we/wy na sekundę i stałym małym opóźnieniem dla aplikacji stanowych. Jedną z głównych zalet dysków w warstwie Ultra jest możliwość dynamicznej zmiany wydajności dysków SSD wraz z obciążeniami, bez konieczności ponownego uruchamiania węzłów agenta. Dyski w warstwie Ultra są odpowiednie dla obciążeń intensywnie korzystających z danych.

W tym artykule opisano sposób konfigurowania nowego lub istniejącego klastra usługi AKS do korzystania z dysków w warstwie Ultra platformy Azure.

Zanim rozpoczniesz

Tę funkcję można ustawić tylko podczas tworzenia klastra lub podczas tworzenia puli węzłów.

Ograniczenia

  • Dyski w warstwie Ultra platformy Azure wymagają wdrożenia pul węzłów w strefach dostępności i regionach, które obsługują te dyski, i są obsługiwane tylko przez określoną serię maszyn wirtualnych. Aby uzyskać więcej informacji, zapoznaj się z odpowiednią tabelą w sekcji Ograniczenia dotyczące dysków w warstwie Ultra.
  • Dysków w warstwie Ultra nie można używać z niektórymi funkcjami, takimi jak zestawy dostępności lub usługa Azure Disk Encryption. Przejrzyj ograniczenia dotyczące dysków w warstwie Ultra, aby uzyskać najnowsze informacje.

Tworzenie klastra, który może używać dysków w warstwie Ultra

Utwórz klaster usługi AKS, który może korzystać z dysków Platformy Azure w warstwie Ultra przy użyciu następujących poleceń interfejsu wiersza polecenia. Użyj parametru , --enable-ultra-ssd aby ustawić EnableUltraSSD funkcję.

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

Jeśli chcesz utworzyć klaster bez obsługi dysków w warstwie Ultra, możesz to zrobić, pomijając --enable-ultra-ssd parametr .

Włączanie dysków w warstwie Ultra w istniejącym klastrze

Możesz włączyć dyski w warstwie Ultra w istniejącym klastrze, dodając nową pulę węzłów do klastra obsługującego dyski w warstwie Ultra. Skonfiguruj nową pulę węzłów do używania dysków w warstwie Ultra przy użyciu parametru --enable-ultra-ssd z poleceniem az aks nodepool add .

Jeśli chcesz utworzyć nowe pule węzłów bez obsługi dysków w warstwie Ultra, możesz to zrobić, wykluczając --enable-ultra-ssd parametr .

Dynamiczne używanie dysków w warstwie Ultra z klasą magazynu

Aby użyć dysków w warstwie Ultra we wdrożeniach lub zestawach stanowych, możesz użyć klasy magazynu do dynamicznej aprowizacji.

Tworzenie klasy magazynu

Klasa magazynu służy do definiowania sposobu dynamicznego tworzenia jednostki magazynu przy użyciu trwałego woluminu. Aby uzyskać więcej informacji na temat klas magazynu Kubernetes, zobacz Klasy magazynu Kubernetes. W tym przykładzie utworzymy klasę magazynu, która odwołuje się do dysków w warstwie Ultra.

  1. Utwórz plik o nazwie azure-ultra-disk-sc.yaml i skopiuj go w następującym manifeście:

    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. Utwórz klasę magazynu przy użyciu kubectl apply polecenia i określ azure-ultra-disk-sc.yaml plik.

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

    Dane wyjściowe powinny przypominać następujące przykładowe dane wyjściowe:

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

Tworzenie oświadczenia trwałego woluminu

Trwałe oświadczenie woluminu (PVC) służy do automatycznego aprowizowania magazynu na podstawie klasy magazynu. W takim przypadku pcv może użyć wcześniej utworzonej klasy magazynu do utworzenia dysku w warstwie Ultra.

  1. Utwórz plik o nazwie azure-ultra-disk-pvc.yaml i skopiuj go w następującym manifeście:

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

    Oświadczenie żąda dysku o nazwie ultra-disk o rozmiarze 1000 GB z dostępem ReadWriteOnce . Klasa magazynu ultra-disk-sc jest określana jako klasa magazynu.

  2. Utwórz oświadczenie trwałego woluminu kubectl apply przy użyciu polecenia i określ azure-ultra-disk-pvc.yaml plik.

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

    Dane wyjściowe powinny przypominać następujące przykładowe dane wyjściowe:

    persistentvolumeclaim/ultra-disk created
    

Używanie woluminu trwałego

Po utworzeniu oświadczenia trwałego woluminu i pomyślnym aprowizacji dysku można utworzyć zasobnik z dostępem do dysku. Poniższy manifest tworzy podstawowy zasobnik NGINX, który używa trwałego oświadczenia woluminu o nazwie ultra-disk do zainstalowania dysku platformy Azure w ścieżce /mnt/azure.

  1. Utwórz plik o nazwie nginx-ultra.yaml i skopiuj go w następującym manifeście:

    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. Utwórz zasobnik przy użyciu kubectl apply polecenia i określ nginx-ultra.yaml plik.

    kubectl apply -f nginx-ultra.yaml
    

    Dane wyjściowe powinny przypominać następujące przykładowe dane wyjściowe:

    pod/nginx-ultra created
    

    Masz teraz uruchomiony zasobnik z dyskiem platformy Azure zainstalowanym /mnt/azure w katalogu .

  3. Zobacz szczegóły konfiguracji przy kubectl describe pod użyciu polecenia i określ nginx-ultra.yaml plik.

    kubectl describe pod nginx-ultra
    

    Dane wyjściowe powinny przypominać następujące przykładowe dane wyjściowe:

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

Następne kroki