Přidání fondu spotových uzlů Azure do clusteru Azure Kubernetes Service (AKS)
V tomto článku přidáte sekundární fond spotových uzlů do existujícího clusteru Azure Kubernetes Service (AKS).
Fond spotových uzlů je fond uzlů zálohovaný škálovací sadou spotových virtuálních počítačů Azure. Díky spotovým virtuálním počítačům v clusteru AKS můžete využít nevyužitou kapacitu Azure s významnými úsporami nákladů. Množství dostupné nevyužité kapacity se liší v závislosti na mnoha faktorech, jako je velikost uzlu, oblast a denní doba.
Když nasadíte fond spotových uzlů, Azure přidělí spotové uzly, pokud je k dispozici kapacita, a nasadí spotovou škálovací sadu, která zálohuje fond spotových uzlů v jedné výchozí doméně. Pro spotové uzly neexistuje žádná smlouva SLA. Neexistují žádné záruky vysoké dostupnosti. Pokud Azure potřebuje kapacitu zpět, infrastruktura Azure vyřadí spotové uzly.
Spotové uzly jsou skvělé pro úlohy, které můžou zvládnout přerušení, předčasné ukončení nebo vyřazení. Například úlohy, jako jsou úlohy dávkového zpracování, vývojová a testovací prostředí, a velké výpočetní úlohy můžou být vhodnými kandidáty na plánování ve fondu spotových uzlů.
Než začnete
- Tento článek předpokládá základní znalosti konceptů Kubernetes a Azure Load Balanceru. Další informace najdete v tématu Základní koncepty Kubernetes pro Službu Azure Kubernetes Service (AKS).
- Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
- Když vytvoříte cluster pro použití fondu spotových uzlů, musí cluster používat škálovací sady virtuálních počítačů pro fondy uzlů a nástroj pro vyrovnávání zatížení skladové položky Standard . Po vytvoření clusteru musíte také přidat další fond uzlů, který je popsaný v tomto kurzu.
- Tento článek vyžaduje, abyste spustili Azure CLI verze 2.14 nebo novější. Verzi zjistíte spuštěním příkazu
az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
Omezení
Při vytváření a správě clusterů AKS s fondem spotových uzlů platí následující omezení:
- Fond spotových uzlů nemůže být výchozím fondem uzlů, dá se použít jenom jako sekundární fond.
- Fondy řídicí roviny a uzlů nemůžete upgradovat současně. Pokud chcete upgradovat řídicí rovinu a zbývající fondy uzlů najednou, musíte je upgradovat samostatně nebo odebrat fond spotových uzlů.
- Fond spotových uzlů musí používat škálovací sady virtuálních počítačů.
- Nemůžete změnit
ScaleSetPriority
aniSpotMaxPrice
po vytvoření. - Při nastavování
SpotMaxPrice
musí být hodnota -1 nebo kladná hodnota s až pěti desetinnými místy. - Fond spotových uzlů má
kubernetes.azure.com/scalesetpriority:spot
popisek,kubernetes.azure.com/scalesetpriority=spot:NoSchedule
taint a systémové pody mají anti-spřažení. - Abyste mohli plánovat úlohy ve fondu spotových uzlů, musíte přidat odpovídající tolerance a spřažení.
Přidání fondu spotových uzlů do clusteru AKS
Při přidávání fondu spotových uzlů do existujícího clusteru musí být cluster s povoleným více fondy uzlů. Když vytvoříte cluster AKS s povoleným více fondy uzlů, ve výchozím nastavení vytvoříte fond priority
Regular
uzlů. Chcete-li přidat fond spotových uzlů, je nutné zadat Spot
jako hodnotu pro priority
. Další podrobnosti o vytvoření clusteru AKS s více fondy uzlů najdete v tématu Použití více fondů uzlů.
Vytvořte fond uzlů pomocí
priority
Spot
az aks nodepool add
příkazu.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
V předchozím příkazu priority
vytvoří fond Spot
uzlů fond spotových uzlů. Parametr eviction-policy
je nastaven na Delete
hodnotu , což je výchozí hodnota. Když nastavíte zásadu vyřazení na Delete
, uzly v podkladové škálovací sadě fondu uzlů se odstraní, když se vyřazuje.
Můžete také nastavit zásadu vyřazení na Deallocate
, což znamená, že uzly v podkladové škálovací sadě jsou při vyřazení nastaveny na zastavený uvolněný stav. Uzly v zastaveném uvolněném stavu se započítávají do kvóty výpočetních prostředků a můžou způsobovat problémy se škálováním nebo upgradem clusteru. Hodnoty priority
a eviction-policy
hodnoty je možné nastavit pouze při vytváření fondu uzlů. Tyto hodnoty nelze později aktualizovat.
Předchozí příkaz také umožňuje automatické škálování clusteru, které doporučujeme používat s fondy spotových uzlů. Na základě úloh spuštěných v clusteru automatické škálování clusteru škáluje počet uzlů nahoru a dolů. U fondů spotových uzlů bude automatické škálování clusteru vertikálně navýšit kapacitu počtu uzlů po vyřazení, pokud je stále potřeba více uzlů. Pokud změníte maximální počet uzlů, které fond uzlů může mít, musíte také upravit maxCount
hodnotu přidruženou k automatickému škálování clusteru. Pokud automatické škálování clusteru nepoužíváte, po vyřazení se spotový fond nakonec sníží na 0 a bude vyžadovat ruční operaci pro příjem dalších spotových uzlů.
Důležité
Naplánujte pouze úlohy ve fondech spotových uzlů, které můžou zpracovávat přerušení, jako jsou úlohy dávkového zpracování a testovací prostředí. Doporučujeme nastavit tainty a tolerance ve fondu spotových uzlů, abyste zajistili, že ve fondu spotových uzlů jsou naplánované jenom úlohy, které dokážou zpracovat vyřazení uzlů. Například výše uvedený příkaz přidá taint , kubernetes.azure.com/scalesetpriority=spot:NoSchedule
takže na tomto uzlu jsou naplánované pouze pody s odpovídajícími tolerancemi.
Ověření fondu spotových uzlů
Pomocí příkazu ověřte, že byl fond uzlů přidán
az aks nodepool show
, a ověřte, že jeSpot
.scaleSetPriority
az aks nodepool show --resource-group myResourceGroup --cluster-name myAKSCluster --name spotnodepool
Naplánování spuštění podu na spotovém uzlu
Pokud chcete naplánovat spuštění podu na spotovém uzlu, můžete přidat spřažení tolerace a uzlu, které odpovídá taintu použitému na spotovém uzlu.
Následující příklad ukazuje část souboru YAML, která definuje tolerance odpovídající kubernetes.azure.com/scalesetpriority=spot:NoSchedule
taintu a spřažení uzlu odpovídající kubernetes.azure.com/scalesetpriority=spot
popisku použitému v předchozím kroku s requiredDuringSchedulingIgnoredDuringExecution
pravidly spřažení uzlů a preferredDuringSchedulingIgnoredDuringExecution
spřažení uzlů:
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
Když nasadíte pod s tímto tolerací a spřažením uzlů, Kubernetes úspěšně naplánuje pod na uzlech s použitým taintem a popiskem. V tomto příkladu platí následující pravidla:
- Uzel musí mít popisek s klíčem
kubernetes.azure.com/scalesetpriority
a hodnota tohoto popisku musí býtspot
. - Uzel má přednostně popisek s klíčem
another-node-label-key
a hodnota tohoto popisku musí býtanother-node-label-value
.
Další informace najdete v tématu Přiřazení podů k uzlům.
Upgrade fondu spotových uzlů
Když upgradujete fond spotových uzlů, AKS interně vydá cordon a oznámení o vyřazení, ale nepoužije se žádné vyprázdnění. Pro upgrady fondu spotových uzlů nejsou k dispozici žádné přepětí. Mimo tyto změny chování při upgradu fondů spotových uzlů je konzistentní s jinými typy fondů uzlů.
Další informace o upgradu najdete v tématu Upgrade clusteru AKS.
Maximální cena za spotový bazén
Ceny spotových instancí jsou proměnné na základě oblasti a skladové položky. Další informace najdete v informacích o cenách pro Linux a Windows.
U proměnných cen máte možnost nastavit maximální cenu v amerických dolarech (USD) až na pět desetinných míst. Například hodnota 0,98765 by byla maximální cena 0,98765 USD za hodinu. Pokud nastavíte maximální cenu na hodnotu -1, instance se nevyřadí na základě ceny. Pokud je k dispozici kapacita a kvóta, cena instance bude nižší cenou aktuální ceny za spotovou instanci nebo pro standardní instanci.
Další kroky
V tomto článku jste zjistili, jak přidat fond spotových uzlů do clusteru AKS. Další informace o řízení podů napříč fondy uzlů najdete v tématu Osvědčené postupy pro pokročilé funkce plánovače v AKS.
Azure Kubernetes Service