Włączanie czyszczenia węzła w dół

Operator platformy Azure Nexus wprowadza nową funkcję o nazwie node down cleaner, która jest domyślnie wyłączona. Pomaga w przeniesieniu zasobników serwera NFS z węzła, który zakończył się niepowodzeniem do nowego węzła, gdy host bez systemu operacyjnego jest wyłączany za pośrednictwem interfejsu wiersza polecenia az. Poniższa procedura umożliwia czyszczenie węzłów i ma zastosowanie zarówno w środowiskach zielonych, jak i brązowych pól.

Wymagania wstępne

  • W tym artykule założono, że zainstalowano interfejs wiersza polecenia platformy Azure i rozszerzenie interfejsu networkcloud wiersza polecenia. Aby uzyskać więcej informacji, zobacz How to Install CLI Extensions (Jak zainstalować rozszerzenia interfejsu wiersza polecenia).
  • Zalogowano się do interfejsu wiersza polecenia platformy Azure przy użyciu odpowiedniej subskrypcji
  • Docelowy stan zasilania komputera bez systemu operacyjnego jest włączony i ma wartość readyState ustawioną na true
  • Użytkownik musi mieć przypisane odpowiednie uprawnienie do wykonania networkcloud baremetalmachine run-command

Procedura włączania czyszczenia węzła w klastrze

Procedura musi być uruchamiana względem węzłów zarządzania. Aby określić, które węzły są węzłami zarządzania, możesz uruchomić następujący interfejs wiersza polecenia baremetalmachine run-read-commandplatformy Azure.

az networkcloud baremetalmachine run-read-command --name <any-ready-baremetal-machine> \
  --commands "[{command:'kubectl get',arguments:[nodes,-l,platform.afo-nc.microsoft.com/role=control-plane]}]" \
  --limit-time-seconds 60 \
  --resource-group <cluster-managed-resource-group> \
  --subscription <subscription>

Uruchom następujące polecenie, aby włączyć czyszczenie węzła w dół

az networkcloud baremetalmachine run-command --bare-metal-machine-name <management-node-baremetal-machine> \
--subscription <subscription> \
--resource-group <cluster-managed-resource-group> \
--limit-time-seconds 60 \
--script "IyEvYmluL2Jhc2gKCmt1YmVjdGwgZ2V0IGRlcGxveW1lbnQgLW4gbmMtc3lzdGVtIG5vZGUtZG93
bi1jbGVhbmVyCgprdWJlY3RsIHNjYWxlIGRlcGxveW1lbnQgLW4gbmMtc3lzdGVtIG5vZGUtZG93
bi1jbGVhbmVyIC0tcmVwbGljYXM9MQoKa3ViZWN0bCBnZXQgZGVwbG95bWVudCAtbiBuYy1zeXN0
ZW0gbm9kZS1kb3duLWNsZWFuZXIKCmt1YmVjdGwgZ2V0IHBvZHMgLW4gbmMtc3lzdGVtIC1sIGFw
cC5rdWJlcm5ldGVzLmlvL25hbWU9bm9kZS1kb3duLWNsZWFuZXIKCg=="

Skrypt wykonuje następujące polecenia kubectl:

kubectl get deployment -n nc-system node-down-cleaner

kubectl scale deployment -n nc-system node-down-cleaner --replicas=1

kubectl get deployment -n nc-system node-down-cleaner

sleep 5s

kubectl get pods -n nc-system -l app.kubernetes.io/name=node-down-cleaner

Po wykonaniu polecenia run-run-baremetalmachine węzeł w dół będzie skalowany do jednej repliki, a jego zasobnik powinien być w stanie uruchomienia. Dane wyjściowe będą wyglądać następująco:

====Action Command Output====
NAME                READY   UP-TO-DATE   AVAILABLE   AGE
node-down-cleaner   0/0     0            0           4d9h
deployment.apps/node-down-cleaner scaled
NAME                READY   UP-TO-DATE   AVAILABLE   AGE
node-down-cleaner   0/1     1            0           4d9h
NAME                                 READY   STATUS    RESTARTS   AGE
node-down-cleaner-xxxxxxxxxxxxxx   1/1     Running   0          5s