Riparazione automatica dei nodi
La funzionalità di riparazione automatica dei nodi monitora continuamente l'integrità di ogni nodo in un pool di nodi. Se un nodo diventa non integro, la funzionalità di riparazione automatica dei nodi lo ripara automaticamente. Questa funzionalità riduce la probabilità di interruzioni del cluster e di degrado del rendimento e riduce al minimo la necessità di manutenzione manuale dei cluster.
Puoi abilitare la riparazione automatica dei nodi durante la creazione o l'aggiornamento di un pool di nodi. Tieni presente che puoi abilitare o disabilitare questa funzionalità sui node pool anziché sui singoli nodi.
Condizioni dei nodi non integri
La riparazione automatica dei nodi esamina lo stato di integrità di ogni nodo per determinare se è necessaria una riparazione. Un nodo è considerato integro se segnala lo stato Ready.
In caso contrario, se segnala consecutivamente uno stato non integro per una durata specifica, vengono avviate le riparazioni.
Uno stato non integro può derivare da uno stato NotReady, rilevato in controlli consecutivi per circa 15 minuti. In alternativa, uno stato non integro può derivare dallo spazio su disco di avvio esaurito, identificato in un periodo di circa 30 minuti.
Puoi controllare manualmente i segnali di integrità del nodo in qualsiasi momento eseguendo il comando kubectl get nodes.
Strategie di riparazione dei nodi
La riparazione automatica dei nodi segue determinate strategie per garantire sia l'integrità complessiva del cluster sia la disponibilità delle applicazioni durante la procedura di riparazione. Questa sezione descrive in che modo la funzionalità di riparazione automatica dei nodi rispetta
PodDisruptionBudget configurazioni, rispetta il Pod Termination
Grace Period e adotta altre misure che riducono al minimo le interruzioni del cluster
durante la riparazione dei nodi.
Rispetta PodDisruptionBudget per 30 minuti
Se un nodo richiede una riparazione, non viene immediatamente svuotato e ricreato. Al contrario, la funzionalità di riparazione automatica dei nodi rispetta le configurazioni di PodDisruptionBudget (PDB) per un massimo di 30 minuti, dopodiché tutti i pod sul nodo vengono eliminati. (Una configurazione PDB definisce, tra le altre cose, il numero minimo di repliche di un determinato pod che devono essere disponibili in un dato momento).
Rispettando il PodDisruptionBudget per circa 30 minuti, la funzionalità di riparazione automatica dei nodi offre un periodo di tempo in cui i pod possono essere riprogrammati e ridistribuiti in sicurezza su altri nodi integri del cluster. In questo modo, viene mantenuto il livello di disponibilità delle applicazioni desiderato durante la procedura di riparazione.
Dopo il limite di tempo di 30 minuti, la riparazione automatica dei nodi procede con la procedura di riparazione, anche se ciò significa violare il PodDisruptionBudget. Senza un limite di tempo, la procedura di riparazione potrebbe bloccarsi indefinitamente se la configurazione PodDisruptionBudget impedisce le espulsioni necessarie per una riparazione.
Rispetta il periodo di tolleranza per l'arresto dei pod
La funzionalità di riparazione automatica dei nodi rispetta anche un periodo di tolleranza per l'arresto dei pod di circa 30 minuti. Il periodo di tolleranza per l'arresto dei pod offre ai pod un periodo di tempo per un arresto normale durante l'arresto. Durante il periodo di tolleranza, il kubelet su un nodo è responsabile dell'esecuzione delle attività di pulizia e della liberazione delle risorse associate ai pod su quel nodo. La funzionalità di riparazione automatica dei nodi consente al kubelet di completare questa pulizia entro 30 minuti. Se trascorrono i 30 minuti assegnati, il nodo viene arrestato forzatamente, indipendentemente dal fatto che i pod siano stati arrestati normalmente.
Strategie aggiuntive di riparazione dei nodi
La riparazione automatica dei nodi implementa anche le seguenti strategie:
- Se più nodi richiedono una riparazione, vengono riparati uno alla volta per limitare le interruzioni del cluster e proteggere i carichi di lavoro.
- Se disabiliti la riparazione automatica dei nodi durante la procedura di riparazione, le riparazioni in corso continuano comunque fino al completamento o al fallimento dell'operazione di riparazione.
Come abilitare e disabilitare la riparazione automatica dei nodi
Puoi abilitare o disabilitare la riparazione automatica dei nodi durante la creazione o l'aggiornamento di un node pool. Puoi abilitare o disabilitare questa funzionalità sui node pool anziché sui singoli nodi.
Abilita la riparazione automatica per un nuovo pool di nodi
gcloud container azure node-pools create NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--node-version 1.35.3-gke.300 \
--vm-size VM_SIZE \
--max-pods-per-node 110 \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES \
--azure-availability-zone AZURE_ZONE \
--ssh-public-key SSH_PUBLIC_KEY" \
--subnet-id SUBNET_ID \
--enable-autorepair
Sostituisci quanto segue:
NODE_POOL_NAME: un nome univoco per il pool di nodi, ad esempionode-pool-1CLUSTER_NAME: il nome del cluster GKE su AzureGOOGLE_CLOUD_LOCATION: la Google Cloud località che gestisce il clusterNODE_VERSION: la versione di Kubernetes da installare su ogni nodo del pool di nodi (ad es. "1.35.3-gke.300")VM_SIZE: una dimensione di VM Azure supportataMIN_NODES: il numero minimo di nodi nel node pool. Per maggiori informazioni, consulta Gestore della scalabilità automatica del clusterMAX_NODES: il numero massimo di nodi nel pool di nodiAZURE_ZONE: la zona di disponibilità di Azure in cui GKE su Azure avvia il pool di nodi, ad esempio3SSH_PUBLIC_KEY: il testo della tua chiave pubblica SSH.SUBNET_ID:l'ID della subnet del pool di nodi.
Abilita la riparazione automatica per un pool di nodi esistente
Per abilitare la riparazione automatica dei nodi su un pool di nodi esistente, esegui il seguente comando:
gcloud container azure node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--enable-autorepair
Sostituisci quanto segue:
NODE_POOL_NAME: un nome univoco per il pool di nodi, ad esempionode-pool-1CLUSTER_NAME: il nome del clusterGOOGLE_CLOUD_LOCATION: la Google Cloud regione che gestisce il cluster
Disabilita la riparazione automatica per un pool di nodi esistente
gcloud container azure node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--no-enable-autorepair
Sostituisci quanto segue:
NODE_POOL_NAME: un nome univoco per il pool di nodi, ad esempionode-pool-1CLUSTER_NAME: il nome del clusterGOOGLE_CLOUD_LOCATION: la Google Cloud regione che gestisce il cluster
Tieni presente che GKE su Azure esegue una disabilitazione normale della riparazione automatica dei nodi. Quando disabiliti la riparazione automatica dei nodi per un pool di nodi esistente, GKE su Azure avvia un'operazione di aggiornamento pool di nodi. L'operazione attende il completamento di eventuali riparazioni dei nodi esistenti prima di procedere.
Verifica se la riparazione automatica dei nodi è abilitata
Esegui il seguente comando per verificare se la riparazione automatica dei nodi è abilitata:
gcloud container azure node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Sostituisci quanto segue:
NODE_POOL_NAME: un nome univoco per il pool di nodi, ad esempionode-pool-1CLUSTER_NAME: il nome del clusterGOOGLE_CLOUD_LOCATION: la Google Cloud regione che gestisce il cluster
Cronologia delle riparazioni dei nodi
Puoi visualizzare la cronologia delle riparazioni eseguite su un pool di nodi eseguendo il seguente comando:
gcloud container azure operations list \
--location GOOGLE_CLOUD_LOCATION \
--filter="metadata.verb=repair AND metadata.target=projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/azureClusters/CLUSTER_NAME/azureNodePools/NODEPOOL_NAME
Sostituisci quanto segue:
GOOGLE_CLOUD_LOCATION: la regione supportata che gestisce il cluster, ad esempious-west1Google CloudPROJECT_ID: il tuo Google Cloud progettoCLUSTER_NAME: il nome del clusterNODE_POOL_NAME: un nome univoco per il pool di nodi, ad esempionode-pool-1
Riepilogo sullo stato del node pool
Dopo aver abilitato la riparazione automatica dei nodi, puoi generare un riepilogo sullo stato del pool di nodi eseguendo il seguente comando:
gcloud container azure node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Un riepilogo sullo stato del pool di nodi ha un aspetto simile a questo esempio:
{
"name": "some-np-name",
"version": "some-version",
"state": "RUNNING",
...
"errors": [
{
"message": "1 node(s) is/are identified as unhealthy among 2 total node(s) in the node pool. No node is under repair."
}
],
}
Il riepilogo sullo stato del pool di nodi ti aiuta a comprendere lo stato attuale del node pool. In questo esempio, il riepilogo contiene un messaggio di errore che indica che uno dei due nodi del pool di nodi non è integro. Indica anche che al momento nessun nodo è in fase di riparazione.