Attivazione della modalità di manutenzione dei nodi

Quando hai bisogno di riparare o gestire i nodi, devi prima metterli in modalità di manutenzione. L'attivazione della modalità di manutenzione sui nodi svuota in modo sicuro i pod/carichi di lavoro ed esclude i nodi dalla pianificazione dei pod. In modalità di manutenzione, puoi lavorare sui nodi senza correre il rischio di interrompere il traffico dei pod.

Come funziona

GKE su Bare Metal consente di attivare la modalità di manutenzione dei nodi. Questo approccio consente agli altri componenti del cluster di sapere correttamente che il nodo è in modalità di manutenzione. Quando imposti un nodo in modalità di manutenzione, non è possibile pianificare pod aggiuntivi sul nodo e i pod esistenti vengono arrestati.

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

Quando utilizzi il processo della modalità di manutenzione, GKE su Bare Metal esegue le seguenti operazioni:

  • Le incompatibilità dei nodi vengono aggiunte ai nodi specificati per indicare che nessun pod può essere pianificato o eseguito sui nodi.

  • Viene applicato un timeout di 20 minuti per garantire che i nodi non rimangano bloccati in attesa dell'arresto dei pod. I pod potrebbero non arrestarsi se sono configurati per tollerare tutte le incompatibilità o se dispongono di finalizzatori. GKE su Bare Metal tenta di arrestare tutti i pod, ma se il timeout viene superato, il nodo viene messo in modalità di manutenzione. Questo timeout impedisce ai pod in esecuzione di bloccare gli upgrade.

Attiva 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 stato pronto e funzionare nel cluster.

Per attivare la modalità di manutenzione sui 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 modificare direttamente la risorsa personalizzata del cluster eseguendo questo comando:

    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 attivare 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 aggiornata del cluster.

    GKE su Bare Metal inizia a mettere i nodi in modalità di manutenzione.

  4. Esegui questo comando per ottenere lo stato dei nodi nel tuo cluster:

    kubectl get nodes --kubeconfig=KUBECONFIG

    La risposta è simile alla seguente:

    NAME                       STATUS   ROLES           AGE     VERSION
    user-anthos-baremetal-01   Ready    control-plane   2d22h   v1.27.4-gke.1600
    user-anthos-baremetal-04   Ready    worker          2d22h   v1.27.4-gke.1600
    user-anthos-baremetal-05   Ready    worker          2d22h   v1.27.4-gke.1600
    user-anthos-baremetal-06   Ready    worker          2d22h   v1.27.4-gke.1600
    

    Tieni presente che i nodi sono ancora pianificabili, ma le incompatibilità impediscono la pianificazione di eventuali pod (senza una tolleranza appropriata).

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

    kubectl get nodepools --kubeconfig ADMIN_KUBECONFIG
    

    La risposta dovrebbe essere simile all'esempio seguente:

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

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

    GKE su Bare Metal aggiunge 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

Modalità di fatturazione e manutenzione

La fatturazione per GKE su Bare Metal si basa sul numero di vCPU del tuo cluster per i nodi in grado di eseguire carichi di lavoro. Quando metti un nodo in modalità di manutenzione, le incompatibilità NoExecute e NoSchedule vengono aggiunte al nodo, ma non disattivano la fatturazione. Dopo aver attivato un nodo in modalità di manutenzione, contrassegna il nodo come non pianificabile (kubectl cordon NODE_NAME) non pianificabile. Quando un nodo viene contrassegnato come non pianificabile, il nodo e le relative vCPU associate vengono esclusi dalla fatturazione.

Come descritto nella pagina dei prezzi, puoi utilizzare kubectl per visualizzare la capacità vCPU (utilizzata per la fatturazione di Anthos) di ciascuno dei tuoi cluster utente. Il comando non tiene conto della pianificabilità o meno del nodo, ma fornisce solo un conteggio vCPU per nodo.

Per identificare il numero di vCPU per nodo per il tuo cluster utente:

kubectl get nodes \
    --kubeconfig USER_KUBECONFIG \
    -o=jsonpath="{range .items[*]}{.metadata.name}{\"\t\"} \
    {.status.capacity.cpu}{\"\n\"}{end}"

Sostituisci USER_KUBECONFIG con il percorso del file kubeconfig per il tuo cluster utente.

Rimuovi 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 modificare direttamente la risorsa personalizzata del cluster eseguendo questo comando:

    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 oppure rimuovi la sezione maintenanceBlocks per rimuovere tutto dalla modalità di manutenzione.

  3. Salva e applica la configurazione aggiornata del cluster.

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