Použití spotových virtuálních počítačů Azure v clusteru Azure Red Hat OpenShift (ARO)
Tento článek obsahuje nezbytné podrobnosti, které vám umožní nakonfigurovat cluster Azure Red Hat OpenShift (ARO) tak, aby používal spotové virtuální počítače Azure.
Použití spotových virtuálních počítačů Azure vám umožňuje využít výhod naší nevyužité kapacity za významné úspory nákladů. V každém okamžiku, kdy Azure potřebuje kapacitu zpět, infrastruktura Azure vyřadí spotové virtuální počítače Azure. Další informace o spotových instancích najdete v tématu Spot Virtual Machines.
Než začnete
Než začnete, ujistěte se, že máte nasazený cluster Azure Red Hat Openshift. Pokud potřebujete cluster ARO, přečtěte si rychlý start ARO pro veřejný cluster nebo kurz privátního clusteru pro privátní cluster. Postup konfigurace clusteru pro použití spotových virtuálních počítačů je stejný pro privátní i veřejné clustery.
Cluster ARO by měl mít vždy aspoň tři pracovní uzly, které nejsou spotové virtuální počítače, a tři řídicí uzly. Cluster ARO nemůže mít žádné řídicí uzly založené na virtuálních počítačích.
Přidání spotových virtuálních počítačů
Správa počítačů v Azure Red Hat Openshift se provádí pomocí MachineSetu. Prostředky MachineSet jsou skupiny počítačů. MachineSets jsou na počítače, protože repliky jsou pody. Pokud potřebujete více počítačů nebo je musíte vertikálně snížit, změňte pole Repliky v sadě počítačů tak, aby vyhovovalo vašim potřebám výpočetních prostředků. Další informace najdete v naší dokumentaci k OpenShift MachineSet.
Použití spotových virtuálních počítačů je určeno přidáním spotVMOptions
pole v rámci specifikace šablony MachineSet.
Abychom tuto sadu MachineSet vytvořili, provedeme následující:
- Získejte kopii machineset spuštěné v clusteru.
- Vytvořte upravenou konfiguraci MachineSet.
- Nasazení této sady počítačů do clusteru
Nejprve se připojte ke clusteru OpenShift pomocí rozhraní příkazového řádku.
oc login $apiServer -u kubeadmin -p <kubeadmin password>
V dalším kroku vypíšete machinesety v clusteru. Výchozí cluster bude mít nasazené 3 sady počítačů:
oc get machinesets -n openshift-machine-api
Následující příklad ukazuje ukázkový výstup z tohoto příkazu:
NAME DESIRED CURRENT READY AVAILABLE AGE
aro-cluster-5t2dj-worker-eastus1 1 1 1 1 2d22h
aro-cluster-5t2dj-worker-eastus2 1 1 1 1 2d22h
aro-cluster-5t2dj-worker-eastus3 1 1 1 1 2d22h
Dále popíšete nasazenou sadu počítačů. Nahraďte <sadu počítačů některou z výše uvedených sad MachineSet> a vypíšete ji do souboru.
oc get machineset <machineset> -n openshift-machine-api -o yaml > spotmachineset.yaml
V sadě MachineSet budete muset změnit následující parametry:
metadata.name
spec.selector.matchLabels.machine.openshift.io/cluster-api-machineset
spec.template.metadata.labels.machine.openshift.io/cluster-api-machineset
spec.template.spec.providerSpec.value.spotVMOptions
(Přidejte toto pole a nastavte ho na{}
.)
Níže je zkrácený příklad YAML spotové sady počítačů, který zvýrazňuje klíčové změny, které je potřeba provést při založit novou spotovou sadu machineset na existující machineset pracovního procesu, včetně dalších informací pro kontext. (Příklad nepředstavuje celou funkční sadu MachineSet. Mnoho polí bylo vynecháno níže.)
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
name: aro-cluster-abcd1-spot-eastus
spec:
replicas: 2
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: aro-cluster-abcd1
machine.openshift.io/cluster-api-machineset: aro-cluster-abcd1-spot-eastus
template:
metadata:
machine.openshift.io/cluster-api-machineset: aro-cluster-abcd1-spot-eastus
spec:
providerSpec:
value:
spotVMOptions: {}
taints:
- effect: NoExecute
key: spot
value: 'true'
Po aktualizaci souboru ho použijte.
oc create -f spotmachineset.yaml
Pokud chcete ověřit úspěšné vytvoření sady MachineSet, spusťte následující příkaz:
oc get machinesets -n openshift-machine-api
Tady je ukázkový výstup. Jakmile budete mít počítače ve stavu Připraveno, vaše sada Machineset je připravená.
NAME DESIRED CURRENT READY AVAILABLE AGE
aro-cluster-5t2dj-worker-eastus1 1 1 1 1 3d1h
aro-cluster-5t2dj-worker-eastus2 1 1 1 1 3d1h
aro-cluster-5t2dj-worker-eastus3 1 1 1 1 3d1h
spot 1 1 1 1 2m47s
Plánování přerušitelných úloh
Doporučujeme přidat do spotových uzlů taint, aby se zabránilo naplánování nerušitelných uzlů a přidání tolerací tohoto taintu do libovolných podů, které na nich chcete naplánovat. Uzly můžete taintovat pomocí specifikace MachineSet.
Můžete například přidat následující YAML do spec.template.spec
:
taints:
- effect: NoExecute
key: spot
value: 'true'
To zabrání naplánování podů na výsledném uzlu, pokud neměli tolerance pro spot='true'
taint, a vyřadili by všechny pody, které nemají tuto tolerance.
Další informace o použití taintů a tolerance najdete v tématu Řízení umístění podů pomocí taintů uzlů.
Kvóta
Počítače můžou kvůli problémům s kvótami přejít do stavu selhání, pokud je kvóta pro typ počítače, který používáte, příliš nízká, a to ani v případě, že by nakonec měla stačit (například jeden uzel se stále odstraňuje, když se vytváří jiný). Z tohoto důvodu se doporučuje nastavit kvótu pro typ počítače, který budete používat pro spotové instance, aby byly mírně vyšší, než by mělo být potřeba (možná o 2*n, kde n je počet jader používaných počítačem). Tato režie by se vyhnula nápravě neúspěšných počítačů, což, i když relativně jednoduché, je stále ruční zásah.
Připravenost uzlů
Jak je vysvětleno v dokumentaci k spotovým virtuálním počítačům, které jsou propojené výše, virtuální počítače přejdou do stavu uvolněného zřizování, pokud už nejsou dostupné nebo už nejsou dostupné za stanovenou maximální cenu.
To se projeví v OpenShiftu jako nepřipravené uzly. Počítače zůstanou ve stavu v pořádku ve fázi Zřízené jako uzel.
Jakmile budou virtuální počítače znovu dostupné, vrátí se k připravenosti.
Řešení problému
Uzel se zablokoval ve stavu Nepřipraveno, základní virtuální počítač se zrušil
Pokud se uzel po uvolnění virtuálního počítače zablokuje po dlouhou dobu v nepřipraveném stavu, můžete zkusit ho odstranit nebo odstranit odpovídající objekt počítače OpenShift.
Spotový počítač zablokovaný ve stavu selhání
Pokud je počítač (objekt OpenShift), který používá spotový virtuální počítač, zablokovaný ve stavu selhání, zkuste ho odstranit ručně. Pokud se nedá odstranit kvůli 403, protože virtuální počítač už neexistuje, upravte počítač a odeberte finalizátory.