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
aniSpotMaxPrice
po utworzeniu. - Podczas ustawiania
SpotMaxPrice
wartoś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ą priority
Regular
. 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
zapriority
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 Delete
wartość , która jest wartością domyślną. Po ustawieniu zasad eksmisji na Delete
wę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:NoSchedule
wię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 toSpot
.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:NoSchedule
kubernetes.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.
Azure Kubernetes Service