Share via


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:

  1. Hämta en kopia av en MachineSet som körs i klustret.
  2. Skapa en ändrad MachineSet-konfiguration.
  3. 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.