Attivazione della modalità di manutenzione dei nodi

Quando è necessario riparare o gestire i nodi, devi prima attivare i nodi in modalità di manutenzione. Se metti i nodi in modalità di manutenzione, i pod/carico di lavoro vengono svuotati in modo sicuro ed esclusi i nodi dalla pianificazione dei pod. In modalità manutenzione, puoi lavorare sui nodi senza correre il rischio di interrompere il traffico dei pod.

Come funziona

I cluster Anthos su Bare Metal consentono di attivare i nodi in modalità di manutenzione. Questo approccio consente ad altri componenti del cluster di sapere correttamente che il nodo è in modalità di manutenzione. Quando metti un nodo in modalità di manutenzione, non puoi pianificare ulteriori pod e i pod esistenti vengono arrestati.

Anziché utilizzare la modalità di manutenzione, puoi utilizzare manualmente i comandi di Kubernetes, come kubectl cordon e kubectl drain, su un nodo specifico. Se esegui i cluster Anthos su Bare Metal versione 1.12.0 (anthosBareMetalVersion: 1.12.0) o precedente, consulta il problema noto su Nodi non contrassegnati se non utilizzi la procedura della modalità di manutenzione.

Quando utilizzi il processo in modalità di manutenzione, i cluster Anthos su Bare Metal eseguono le seguenti operazioni:

  • Le incompatibilità dei nodi vengono aggiunte ai nodi specificati per indicare che non è possibile pianificare o eseguire alcun pod sui nodi.

  • Viene applicato un timeout di 20 minuti per garantire che i nodi non si blocchino in attesa dell'arresto dei pod. I pod potrebbero non arrestarsi se sono configurati per tollerare tutte le incompatibilità o se hanno finalisti. I cluster Anthos su Bare Metal tentano di arrestare tutti i pod, ma se il timeout viene superato, il nodo viene messo in modalità di manutenzione. Questo timeout impedisce che i pod in esecuzione blocchino gli upgrade.

  • Se nel nodo è in esecuzione un carico di lavoro basato su VM, i cluster Anthos su Bare Metal applicano un NodeSelector al pod dell'istanza della macchina virtuale (VMI), quindi arresta il pod. NodeSelector assicura che il pod VMI venga riavviato sullo stesso nodo quando il nodo viene rimosso dalla modalità di manutenzione.

Attivare la modalità di manutenzione per un nodo

Scegli i nodi che vuoi attivare in modalità di manutenzione specificando gli intervalli IP per i nodi selezionati in maintenanceBlocks nel file di configurazione del cluster. I nodi che scegli devono essere in uno stato pronto e funzionanti nel cluster.

Per attivare la modalità di manutenzione per i nodi:

  1. Modifica il file di configurazione del cluster per selezionare i nodi che vuoi mettere in modalità di manutenzione.

    Puoi modificare il file di configurazione con un editor a tua scelta oppure puoi modificare direttamente la risorsa personalizzata del cluster eseguendo il comando seguente:

    kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
    

    Sostituisci quanto segue:

    • CLUSTER_NAMESPACE: lo spazio dei nomi del cluster.
    • CLUSTER_NAME: il nome del cluster.
  2. Aggiungi la sezione maintenanceBlocks al file di configurazione del cluster per specificare un singolo indirizzo IP o un intervallo di indirizzi, per i nodi che vuoi mettere in modalità di manutenzione.

    Il seguente esempio mostra come selezionare più nodi specificando un intervallo di indirizzi IP:

    metadata:
      name: my-cluster
      namespace: cluster-my-cluster
    spec:
      maintenanceBlocks:
        cidrBlocks:
        - 172.16.128.1-172.16.128.64
    
  3. Salva e applica la configurazione del cluster aggiornata.

    I cluster Anthos su Bare Metal avviano la modalità di manutenzione dei nodi.

  4. Esegui il comando seguente per ottenere lo stato dei nodi nel cluster:

    kubectl get nodes -n CLUSTER_NAME
    

    La risposta è simile alla seguente:

    NAME                              STATUS                     ROLES    AGE     VERSION
    user-anthos-baremetal-01          Ready                      master   2d22h   v1.17.8-gke.16
    user-anthos-baremetal-04          Ready                      <none>   2d22h   v1.17.8-gke.16
    user-anthos-baremetal-05          Ready,SchedulingDisabled   <none>   2d22h   v1.17.8-gke.16
    user-anthos-baremetal-06          Ready                      <none>   2d22h   v1.17.8-gke.16
    

    Lo stato SchedulingDisabled indica che un nodo è in modalità di manutenzione.

  5. Esegui il comando seguente per ottenere il numero di nodi in modalità di manutenzione:

    kubectl get nodepools
    

    La risposta dovrebbe essere simile al seguente output:

    NAME   READY   RECONCILING   STALLED   UNDERMAINTENANCE   UNKNOWN
    np1    3       0             0         1                  0
    

    La colonna UNDERMAINTENANCE in questo esempio mostra che un nodo è in modalità di manutenzione.

    I cluster Anthos su Bare Metal aggiungono anche le seguenti incompatibilità ai nodi quando vengono messi in modalità di manutenzione:

    • baremetal.cluster.gke.io/maintenance:NoExecute
    • baremetal.cluster.gke.io/maintenance:NoSchedule

Rimuovere un nodo dalla modalità di manutenzione

Per rimuovere i nodi dalla modalità di manutenzione:

  1. Modifica il file di configurazione del cluster per cancellare i nodi che vuoi rimuovere dalla modalità di manutenzione.

    Puoi modificare il file di configurazione con un editor a tua scelta oppure puoi modificare direttamente la risorsa personalizzata del cluster eseguendo il comando seguente:

    kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
    

    Sostituisci quanto segue:

    • CLUSTER_NAMESPACE: lo spazio dei nomi del cluster.
    • CLUSTER_NAME: il nome del cluster.
  2. Modifica gli indirizzi IP per rimuovere nodi specifici dalla modalità di manutenzione o rimuovi la sezione maintenanceBlocks per rimuovere tutte le operazioni dalla modalità di manutenzione.

  3. Salva e applica la configurazione del cluster aggiornata.

  4. Utilizza i comandi kubectl per controllare lo stato dei nodi.