Använda virtuella Azure Spot-datorer i ett Azure Red Hat OpenShift-kluster (ARO)
Den här artikeln innehåller nödvändig information som gör att du kan konfigurera ditt Azure Red Hat OpenShift-kluster (ARO) för att använda virtuella Azure Spot-datorer.
Med azure spot virtual machines kan du dra nytta av vår outnyttjade kapacitet till betydande kostnadsbesparingar. När som helst när Azure behöver tillbaka kapaciteten tar Azure-infrastrukturen bort virtuella Azure Spot-datorer. Mer information om instanser av oanvänd kapacitet finns i Spot Virtual Machines (Virtuella datorer med oanvänd kapacitet).
Innan du börjar
Innan du kommer igång måste du se till att du har ett Azure Red Hat Openshift-kluster distribuerat. Om du behöver ett ARO-kluster kan du läsa ARO-snabbstarten för ett offentligt kluster eller självstudiekursen för privata kluster för ett privat kluster. Stegen för att konfigurera klustret att använda virtuella datorer med oanvänd kapacitet är desamma för både privata och offentliga kluster.
Ett ARO-kluster bör alltid ha minst tre arbetsnoder som är virtuella datorer som inte är oanvända och tre kontrollnoder. Ett ARO-kluster kan inte ha vm-baserade kontrollnoder för oanvänd kapacitet.
Lägg till virtuella datorer för oanvänd kapacitet
Maskinhantering i Azure Red Hat Openshift utförs med hjälp av MachineSet. MachineSet-resurser är grupper av datorer. MachineSets är till datorer som ReplicaSets är till poddar. Om du behöver fler datorer eller måste skala ned dem ändrar du fältet Repliker på datorn så att det uppfyller dina beräkningsbehov. Mer information finns i vår dokumentation om OpenShift MachineSet
Användningen av virtuella datorer med oanvänd kapacitet anges genom att fältet läggs till spotVMOptions
i mallspecifikationen för en MachineSet.
För att skapa den här MachineSet:en gör vi så här:
- Hämta en kopia av en MachineSet som körs i klustret.
- Skapa en ändrad MachineSet-konfiguration.
- Distribuera den här MachineSet till klustret
Anslut först till ditt OpenShift-kluster med hjälp av CLI.
oc login $apiServer -u kubeadmin -p <kubeadmin password>
Nu ska du visa en lista över MachineSets i klustret. Ett standardkluster har tre MachineSets distribuerade:
oc get machinesets -n openshift-machine-api
Följande visar ett exempel på utdata från det här kommandot:
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
Nu ska du beskriva den distribuerade MachineSet. Ersätt <machineset> med någon av de MachineSets som anges ovan och mata ut den till en fil.
oc get machineset <machineset> -n openshift-machine-api -o yaml > spotmachineset.yaml
Du måste ändra följande parametrar i MachineSet:
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
(Lägg till det här fältet och ange det till{}
.)
Nedan visas ett förkortat exempel på Spot MachineSet YAML som visar de viktiga ändringar du behöver göra när du baserar en ny Spot MachineSet på en befintlig arbetsdatorUppsättning, inklusive ytterligare information för kontext. (Exemplet representerar inte en hel, funktionell MachineSet, många fält har utelämnats nedan.)
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'
När filen har uppdaterats tillämpar du den.
oc create -f spotmachineset.yaml
Kontrollera att din MachineSet har skapats genom att köra följande kommando:
oc get machinesets -n openshift-machine-api
Här är ett exempel på utdata. Din datoruppsättning är klar när du har datorer i tillståndet "Klar".
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
Schemalägga avbrottsbara arbetsbelastningar
Vi rekommenderar att du lägger till en taint i noderna Spot för att förhindra att noder som inte kan avbrytas schemaläggs på dem och lägga till toleranser för den här tainten i alla poddar som du vill schemalägga på dem. Du kan taint noderna via MachineSet-specifikationen.
Du kan till exempel lägga till följande YAML i spec.template.spec
:
taints:
- effect: NoExecute
key: spot
value: 'true'
Detta förhindrar att poddar schemaläggs på den resulterande noden om de inte hade en tolerans för spot='true'
taint, och det skulle avlägsna alla poddar som saknar den toleransen.
Mer information om hur du tillämpar taints och toleranser finns i Kontrollera poddplacering med hjälp av nodtaints.
Kvot
Datorer kan hamna i ett misslyckat tillstånd på grund av kvotproblem om kvoten för den datortyp som du använder är för låg under en kort stund, även om den så småningom bör vara tillräcklig (till exempel tar en nod fortfarande bort när en annan skapas). Därför rekommenderar vi att du anger en kvot för den datortyp som du använder för att Spot-instanser ska vara något högre än vad som borde behövas (kanske med 2*n, där n är antalet kärnor som används av en dator). Detta skulle undvika att behöva åtgärda misslyckade datorer, som, även om de är relativt enkla, fortfarande är manuella åtgärder.
Nodberedskap
Som förklaras i dokumentationen för virtuella datorer med oanvänd kapacitet som länkats ovan går virtuella datorer i frigjord etableringstillstånd när de inte längre är tillgängliga eller inte längre är tillgängliga till det högsta angivna priset.
Detta visar sig i OpenShift som inte redo noder. Datorerna förblir felfria i fas Etablerad som nod.
De återgår till att vara redo när de virtuella datorerna är tillgängliga igen
Felsökning
Noden har fastnat i tillståndet Inte redo, den underliggande virtuella datorn frigjord
Om en nod har fastnat under en längre tid i tillståndet Inte redo efter att den virtuella datorn frigjorts kan du prova att ta bort den eller ta bort motsvarande OpenShift-datorobjekt.
Feldator har fastnat i feltillstånd
Om en dator (OpenShift-objekt) som använder en virtuell dator för oanvänd kapacitet har fastnat i ett feltillstånd kan du prova att ta bort den manuellt. Om den inte kan tas bort på grund av en 403 eftersom den virtuella datorn inte längre finns, redigerar du datorn och tar bort slutförarna.