Dodawanie puli węzłów typu spot platformy Azure do klastra usługi Azure Kubernetes Service (AKS)

W tym artykule dodasz dodatkową pulę węzłów typu spot do istniejącego klastra usługi Azure Kubernetes Service (AKS).

Pula węzłów typu spot to pula węzłów wspierana przez zestaw skalowania maszyn wirtualnych typu spot platformy Azure. Dzięki maszynom wirtualnym typu spot w klastrze usługi AKS możesz korzystać z nieuprawnionej pojemności platformy Azure ze znacznymi oszczędnościami kosztów. Ilość dostępnej nieuprawnionej pojemności zależy od wielu czynników, takich jak rozmiar węzła, region i godzina dnia.

Podczas wdrażania puli węzłów typu spot platforma Azure przydziela węzły typu spot, jeśli jest dostępna pojemność i wdraża zestaw skalowania typu spot, który wspiera pulę węzłów typu Spot w pojedynczej domenie domyślnej. Nie ma umowy SLA dla węzłów typu spot. Brak gwarancji wysokiej dostępności. Jeśli platforma Azure potrzebuje pojemności z powrotem, infrastruktura platformy Azure eksmituje węzły typu Spot.

Węzły typu spot doskonale nadają się do obsługi przerw w działaniu, wczesnych przerwań lub eksmisji. Na przykład obciążenia, takie jak zadania przetwarzania wsadowego, środowiska programistyczne i testowe, a duże obciążenia obliczeniowe mogą być dobrymi kandydatami do planowania w puli węzłów typu spot.

Zanim rozpoczniesz

  • W tym artykule przyjęto założenie, że podstawowe informacje na temat pojęć związanych z platformami Kubernetes i Azure Load Balancer. Aby uzyskać więcej informacji, zobacz temat Kubernetes core concepts for Azure Kubernetes Service (AKS) (Kubernetes — podstawowe pojęcia dotyczące usługi Azure Kubernetes Service (AKS)).
  • Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
  • Podczas tworzenia klastra do korzystania z puli węzłów typu spot klaster musi używać zestawów skalowania maszyn wirtualnych dla pul węzłów i modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa . Należy również dodać kolejną pulę węzłów po utworzeniu klastra, który został omówiony w tym samouczku.
  • Ten artykuł wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.14 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Ograniczenia

Następujące ograniczenia mają zastosowanie podczas tworzenia klastrów usługi AKS i zarządzania nimi za pomocą puli węzłów typu Spot:

  • Pula węzłów typu spot nie może być domyślną pulą węzłów, może być używana tylko jako pula pomocnicza.
  • Nie można jednocześnie uaktualnić płaszczyzny sterowania i pul węzłów. Należy je uaktualnić oddzielnie lub usunąć pulę węzłów typu spot, aby uaktualnić płaszczyznę sterowania i pozostałe pule węzłów w tym samym czasie.
  • Pula węzłów typu spot musi używać zestawów skalowania maszyn wirtualnych.
  • Nie można zmienić ScaleSetPriority ani SpotMaxPrice po utworzeniu.
  • Podczas ustawiania SpotMaxPricewartości musi być -1 lub dodatnia z maksymalnie pięcioma miejscami dziesiętnymi.
  • Pula węzłów typu spot ma etykietę kubernetes.azure.com/scalesetpriority:spot , kubernetes.azure.com/scalesetpriority=spot:NoSchedule defekt, a zasobniki systemowe mają anty-koligację.
  • Musisz dodać odpowiednią tolerancję i koligację , aby zaplanować obciążenia w puli węzłów typu spot.

Dodawanie puli węzłów typu spot do klastra usługi AKS

Podczas dodawania puli węzłów typu spot do istniejącego klastra musi być klastrem z włączonymi wieloma pulami węzłów. Podczas tworzenia klastra usługi AKS z włączonymi wieloma pulami węzłów domyślnie należy utworzyć pulę węzłów z wartością priorityRegular . Aby dodać pulę węzłów typu Spot, należy określić Spot jako wartość .priority Aby uzyskać więcej informacji na temat tworzenia klastra usługi AKS z wieloma pulami węzłów, zobacz Używanie wielu pul węzłów.

  • Utwórz pulę węzłów Spot za priority pomocą az aks nodepool add polecenia .

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name spotnodepool \
        --priority Spot \
        --eviction-policy Delete \
        --spot-max-price -1 \
        --enable-cluster-autoscaler \
        --min-count 1 \
        --max-count 3 \
        --no-wait
    

W poprzednim poleceniu wartość parametru priority sprawia, że pula węzłów Spot jest pulą węzłów typu Spot. Parametr eviction-policy jest ustawiony na Deletewartość , która jest wartością domyślną. Po ustawieniu zasad eksmisji na Deletewęzły w bazowym zestawie skalowania puli węzłów zostaną usunięte po ich eksmisji.

Można również ustawić zasady eksmisji na Deallocate, co oznacza, że węzły w bazowym zestawie skalowania są ustawione na stan zatrzymanego przydziału po eksmisji. Węzły w zatrzymanej liczbie stanu cofania przydziału zasobów obliczeniowych i mogą powodować problemy ze skalowaniem lub uaktualnianiem klastra. Wartości priority i eviction-policy można ustawić tylko podczas tworzenia puli węzłów. Tych wartości nie można zaktualizować później.

Poprzednie polecenie włącza również narzędzie do automatycznego skalowania klastra, którego zalecamy używać z pulami węzłów typu spot. Na podstawie obciążeń uruchomionych w klastrze funkcja automatycznego skalowania klastra skaluje liczbę węzłów w górę i w dół. W przypadku pul węzłów typu spot narzędzie do automatycznego skalowania klastra będzie skalować w górę liczbę węzłów po eksmisji, jeśli więcej węzłów jest nadal potrzebnych. Jeśli zmienisz maksymalną liczbę węzłów, którą może mieć pula węzłów, musisz również dostosować maxCount wartość skojarzona z funkcją automatycznego skalowania klastra. Jeśli nie używasz narzędzia do automatycznego skalowania klastra, po eksmisji pula typu Spot ostatecznie zmniejszy się do 0 i będzie wymagać ręcznej operacji odbierania dodatkowych węzłów typu Spot.

Ważne

Zaplanuj tylko obciążenia w pulach węzłów typu spot, które mogą obsługiwać przerwy, takie jak zadania przetwarzania wsadowego i środowiska testowe. Zalecamy skonfigurowanie defektów i tolerancji w puli węzłów typu spot, aby upewnić się, że w puli węzłów typu spot są zaplanowane tylko obciążenia, które mogą obsługiwać eksmisji węzłów. Na przykład powyższe polecenie dodaje defekt , kubernetes.azure.com/scalesetpriority=spot:NoSchedulewięc w tym węźle zaplanowano tylko zasobniki z odpowiednią tolerancją.

Weryfikowanie puli węzłów typu spot

  • Sprawdź, czy pula węzłów została dodana przy użyciu az aks nodepool show polecenia i upewnij się, scaleSetPriority że parametr to Spot.

    az aks nodepool show --resource-group myResourceGroup --cluster-name myAKSCluster --name spotnodepool
    

Planowanie uruchamiania zasobnika w węźle typu spot

Aby zaplanować uruchamianie zasobnika w węźle typu Spot, można dodać tolerancję i koligację węzła odpowiadającą defektowi zastosowanemu do węzła typu Spot.

W poniższym przykładzie pokazano część pliku YAML, która definiuje tolerancję odpowiadającą defektowi i koligacji węzła odpowiadającej kubernetes.azure.com/scalesetpriority=spot:NoSchedulekubernetes.azure.com/scalesetpriority=spot etykiecie użytej w poprzednim kroku z regułami requiredDuringSchedulingIgnoredDuringExecution koligacji węzłów i preferredDuringSchedulingIgnoredDuringExecution :

spec:
  containers:
  - name: spot-example
  tolerations:
  - key: "kubernetes.azure.com/scalesetpriority"
    operator: "Equal"
    value: "spot"
    effect: "NoSchedule"
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: "kubernetes.azure.com/scalesetpriority"
            operator: In
            values:
            - "spot"
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 1
        preference:
          matchExpressions:
          - key: another-node-label-key
            operator: In
            values:
            - another-node-label-value

Po wdrożeniu zasobnika z tą tolerancją i koligacją węzła platforma Kubernetes pomyślnie planuje zasobnik na węzłach z zastosowanym defektem i etykietą. W tym przykładzie obowiązują następujące reguły:

  • Węzeł musi mieć etykietę z kluczem kubernetes.azure.com/scalesetpriority, a wartość tej etykiety musi mieć wartość spot.
  • Węzeł najlepiej ma etykietę z kluczem another-node-label-key, a wartość tej etykiety musi mieć wartość another-node-label-value.

Aby uzyskać więcej informacji, zobacz Przypisywanie zasobników do węzłów.

Uaktualnianie puli węzłów typu spot

Podczas uaktualniania puli węzłów typu Spot usługa AKS wewnętrznie wystawia kordon i powiadomienie o eksmisji, ale nie jest stosowane żadne opróżnianie. Brak dostępnych węzłów przepięcia dla uaktualnień puli węzłów typu spot. Poza tymi zmianami zachowanie podczas uaktualniania pul węzłów typu spot jest zgodne z innymi typami puli węzłów.

Aby uzyskać więcej informacji na temat uaktualniania, zobacz Uaktualnianie klastra usługi AKS.

Maksymalna cena za pulę typu spot

Ceny wystąpień typu spot są zmienne na podstawie regionu i jednostki SKU. Aby uzyskać więcej informacji, zobacz informacje o cenach dla systemów Linux i Windows.

Ze zmiennymi cenami możesz ustawić maksymalną cenę w dolarach amerykańskich (USD) przy użyciu maksymalnie pięciu miejsc dziesiętnych. Na przykład wartość 0,98765 będzie maksymalną ceną 0,98765 USD za godzinę. Jeśli ustawisz maksymalną cenę na -1, wystąpienie nie zostanie wykluczone na podstawie ceny. O ile jest dostępna pojemność i limit przydziału, cena wystąpienia będzie niższą ceną bieżącej ceny wystąpienia typu spot lub wystąpienia standardowego.

Następne kroki

W tym artykule przedstawiono sposób dodawania puli węzłów typu spot do klastra usługi AKS. Aby uzyskać więcej informacji na temat kontrolowania zasobników w pulach węzłów, zobacz Najlepsze rozwiązania dotyczące zaawansowanych funkcji harmonogramu w usłudze AKS.