Używanie maszyn wirtualnych typu spot platformy Azure w klastrze usługi Azure Red Hat OpenShift (ARO)
Ten artykuł zawiera niezbędne szczegóły, które umożliwiają skonfigurowanie klastra Azure Red Hat OpenShift (ARO) do korzystania z maszyn wirtualnych typu spot platformy Azure.
Korzystanie z maszyn wirtualnych typu spot platformy Azure umożliwia korzystanie z nieużywanej pojemności przy znacznych oszczędnościach. W dowolnym momencie, gdy platforma Azure potrzebuje pojemności z powrotem, infrastruktura platformy Azure wykluczy maszyny wirtualne typu spot platformy Azure. Aby uzyskać więcej informacji na temat wystąpień typu spot, zobacz Maszyny wirtualne typu spot.
Zanim rozpoczniesz
Przed rozpoczęciem upewnij się, że wdrożono klaster usługi Azure Red Hat Openshift. Jeśli potrzebujesz klastra usługi ARO, zobacz przewodnik Szybki start usługi ARO dla klastra publicznego lub samouczek dotyczący klastra prywatnego dla klastra prywatnego. Kroki konfigurowania klastra pod kątem używania maszyn wirtualnych typu Spot są takie same zarówno w przypadku klastrów prywatnych, jak i publicznych.
Klaster usługi ARO powinien zawsze mieć co najmniej trzy węzły robocze, które nie są maszynami wirtualnymi typu spot i trzema węzłami sterowania. Klaster ARO nie może mieć żadnych węzłów sterowania opartych na maszynie wirtualnej typu spot.
Dodawanie maszyn wirtualnych typu spot
Zarządzanie maszynami w usłudze Azure Red Hat Openshift odbywa się przy użyciu zestawu MachineSet. Zasoby zestawu maszyn to grupy maszyn. Zestawy maszyn to maszyny, ponieważ zestawy replik to zasobniki. Jeśli potrzebujesz więcej maszyn lub musisz je skalować w dół, zmień pole Repliki na maszynie, aby spełniało potrzeby obliczeniowe. Aby dowiedzieć się więcej, zapoznaj się z naszą dokumentacją platformy OpenShift MachineSet
Użycie maszyn wirtualnych typu spot jest określane przez dodanie spotVMOptions
pola w specyfikacji szablonu zestawu maszyn.
Aby utworzyć ten zestaw MachineSet, wykonaj następujące elementy:
- Pobierz kopię zestawu MachineSet uruchomionego w klastrze.
- Utwórz zmodyfikowaną konfigurację zestawu maszyn.
- Wdrażanie tego zestawu maszyn w klastrze
Najpierw połącz się z klastrem OpenShift przy użyciu interfejsu wiersza polecenia.
oc login $apiServer -u kubeadmin -p <kubeadmin password>
Następnie wyświetlisz listę zestawów MachineSet w klastrze. Domyślny klaster będzie miał wdrożone 3 zestawy Maszyn:
oc get machinesets -n openshift-machine-api
Poniżej przedstawiono przykładowe dane wyjściowe z tego polecenia:
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
Następnie opiszesz wdrożony zestaw MachineSet. Zastąp zestaw <> maszyn jednym z zestawów maszyn wymienionych powyżej i wyprowadź go do pliku.
oc get machineset <machineset> -n openshift-machine-api -o yaml > spotmachineset.yaml
Musisz zmienić następujące parametry w zestawie 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
(Dodaj to pole i ustaw je na{}
.)
Poniżej znajduje się skrócony przykład kodu YAML zestawu maszyn typu spot, który wyróżnia kluczowe zmiany, które należy wprowadzić podczas tworzenia nowego zestawu maszyn typu spot na istniejącym zestawie maszyn roboczych, w tym kilka dodatkowych informacji na potrzeby kontekstu. (Przykład nie reprezentuje całego, funkcjonalnego zestawu MachineSet; wiele pól zostało pominiętych poniżej).
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 zaktualizowaniu pliku zastosuj go.
oc create -f spotmachineset.yaml
Aby sprawdzić, czy zestaw MachineSet został pomyślnie utworzony, uruchom następujące polecenie:
oc get machinesets -n openshift-machine-api
Oto przykładowe dane wyjściowe. Zestaw maszyn jest gotowy po utworzeniu maszyn w stanie "Gotowe".
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
Planowanie przerywanych obciążeń
Zaleca się dodanie defektu do węzłów typu Spot, aby zapobiec zaplanowaniu na nich niezwiązanych z przerwaniem węzłów oraz dodać tolerancje tego defektu do wszystkich zasobników, które mają być zaplanowane na nich. Węzły można za pomocą specyfikacji Zestawu maszyn.
Możesz na przykład dodać następujący kod YAML do pliku spec.template.spec
:
taints:
- effect: NoExecute
key: spot
value: 'true'
Zapobiega to zaplanowaniu zasobników w węźle wynikowym, chyba że mieli tolerancję spot='true'
dla defektu, i wykluczałoby to wszelkie zasobniki, które nie mają tej tolerancji.
Aby dowiedzieć się więcej na temat stosowania defektów i tolerancji, przeczytaj Temat Kontrolowanie umieszczania zasobników przy użyciu defektów węzłów.
Norma sprzedaży
Maszyny mogą przechodzić w stan niepowodzenia z powodu problemów z limitem przydziału, jeśli limit przydziału używanego typu maszyny jest zbyt niski przez krótki moment, nawet jeśli w końcu powinien być wystarczający (na przykład jeden węzeł nadal jest usuwany podczas tworzenia innego). W związku z tym zaleca się ustawienie limitu przydziału dla typu maszyny, którego użyjesz, aby wystąpienia typu spot były nieco wyższe niż powinny być potrzebne (może do 2*n, gdzie n jest liczbą rdzeni używanych przez maszynę). To obciążenie pozwoliłoby uniknąć konieczności usunięcia awarii maszyn, które, choć stosunkowo proste, są nadal interwencją ręczną.
Gotowość węzła
Jak wyjaśniono w powyższej dokumentacji maszyny wirtualnej typu spot, maszyny wirtualne przechodzą do stanu aprowizacji cofniętego przydziału, gdy nie są już dostępne lub nie są już dostępne w określonej cenie maksymalnej.
Spowoduje to manifest w rozwiązaniu OpenShift jako węzły Nie gotowe . Maszyny pozostaną w dobrej kondycji w fazie Aprowizowanie jako węzeł.
Powrócą one do gotowości po ponownym udostępnieniu maszyn wirtualnych
Rozwiązywanie problemów
Węzeł zablokowany w stanie Brak gotowości, cofnięto przydział podstawowej maszyny wirtualnej
Jeśli węzeł jest zablokowany przez długi czas w stanie Nie wszystko gotowe po cofnięciu przydziału maszyny wirtualnej, możesz spróbować go usunąć lub usunąć odpowiadający mu obiekt maszyny OpenShift.
Maszyna typu spot zablokowana w stanie Niepowodzenie
Jeśli maszyna (obiekt OpenShift), która używa maszyny wirtualnej typu spot, jest zablokowana w stanie Niepowodzenie, spróbuj usunąć ją ręcznie. Jeśli nie można go usunąć z powodu błędu 403, ponieważ maszyna wirtualna już nie istnieje, zmodyfikuj maszynę i usuń finalizatory.