Risolvere i problemi relativi al gestore della scalabilità automatica dei cluster che non esegue lo scale up

Quando i pod in Google Kubernetes Engine (GKE) sono bloccati in uno stato Pending e non vengono aggiunti nuovi nodi, spesso ciò indica un problema con la funzionalità di scale up del gestore della scalabilità automatica dei cluster. Questo problema può impedire alle tue applicazioni di scalare per soddisfare la domanda, ritardare i deployment e influire sulla disponibilità del servizio.

Utilizza questa pagina per diagnosticare e risolvere i problemi comuni che impediscono al gestore della scalabilità automatica del cluster di aggiungere nuovi nodi. La correzione di questi problemi consente allo scheduler di Kubernetes di posizionare i workload tempestivamente e aiuta il cluster ad adattarsi all'aumento del carico.

Queste informazioni sono importanti per gli sviluppatori di applicazioni, che hanno bisogno che le loro applicazioni e i loro servizi vengano pianificati ed eseguiti in modo affidabile, e per gli amministratori e gli operatori della piattaforma, che sono responsabili di garantire che il cluster possa eseguire il provisioning dinamico delle risorse per soddisfare i requisiti del workload e mantenere i livelli di servizio. Per saperne di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud , consulta Ruoli utente e attività comuni di GKE.

Scopri quando il gestore della scalabilità automatica dei cluster fa lo scale up dei nodi

Prima di procedere con i passaggi per la risoluzione dei problemi, può essere utile capire quando il gestore della scalabilità automatica del cluster tenta di scalare i nodi. Il gestore della scalabilità automatica del cluster aggiunge nodi solo quando le risorse esistenti non sono sufficienti.

Ogni 10 secondi, il gestore della scalabilità automatica dei cluster controlla se sono presenti pod non pianificabili. Un pod non è pianificabile quando lo scheduler Kubernetes non può inserirlo in nessun nodo esistente a causa di risorse insufficienti, vincoli dei nodi o requisiti del pod non soddisfatti.

Quando il gestore della scalabilità automatica del cluster trova pod non pianificabili, valuta se l'aggiunta di un nodo consentirebbe la pianificazione del pod. Se l'aggiunta di un nodo consente la pianificazione di un pod, il gestore della scalabilità automatica del cluster aggiunge un nuovo nodo al gruppo di istanze gestite (MIG). Il gestore della programmazione di Kubernetes può quindi pianificare il pod sul nodo di cui è stato appena eseguito il provisioning.

Controllare se sono presenti pod non pianificabili

Per determinare se il cluster deve fare lo scale up, controlla se sono presenti pod non pianificati:

  1. Nella console Google Cloud , vai alla pagina Workload.

    Vai a Carichi di lavoro

  2. Nel campo Filtro , inserisci unschedulable e premi Invio.

    Se sono elencati dei pod, significa che hai pod non pianificabili. Per risolvere i problemi relativi ai pod non pianificabili, consulta Errore: pod non pianificabile. La risoluzione della causa alla base dei pod non pianificabili spesso consente al gestore della scalabilità automatica dei cluster di eseguire lo scale up. Per identificare e risolvere gli errori specifici del gestore della scalabilità automatica dei cluster, consulta le sezioni seguenti.

    Se non sono elencati pod, il gestore della scalabilità automatica dei cluster non deve eseguire lo scale up e funziona come previsto.

Controlla se in precedenza avevi pod non pianificabili

Se stai indagando sulla causa dell'errore del gestore della scalabilità automatica dei cluster in passato, controlla se in precedenza erano presenti pod non pianificabili:

  1. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

  2. Specifica un intervallo di tempo per le voci di log che vuoi visualizzare.

  3. Nel riquadro della query, inserisci la seguente query:

    logName="projects/PROJECT_ID/logs/events"
    jsonPayload.source.component="default-scheduler"
    jsonPayload.reason="FailedScheduling"
    

    Sostituisci PROJECT_ID con l'ID progetto.

  4. Fai clic su Esegui query.

    Se sono presenti risultati, significa che nell'intervallo di tempo specificato erano presenti pod non pianificabili.

Controlla se il problema è causato da una limitazione

Dopo aver confermato di aver annullato la pianificazione dei pod, assicurati che il problema con il gestore della scalabilità automatica dei cluster non sia causato da una delle limitazioni del gestore della scalabilità automatica dei cluster.

Analizza le metriche di Cloud Monitoring per i problemi di scalabilità verticale

Il gestore della scalabilità automatica del cluster GKE espone a Cloud Monitoring metriche che forniscono informazioni dettagliate sulle sue decisioni, in particolare in relazione a ComputeClass. Queste metriche sono disponibili su GKE versione 1.37 e successive e includono quanto segue.

  • Pod in attesa: kubernetes.io/autoscaler/cluster_pending_pods_per_ccc mostra i pod che il gestore della scalabilità automatica sta tentando di pianificare.
  • Tentativi di provisioning: kubernetes.io/autoscaler/cluster_node_provisioning_attempts_count_per_ccc monitora la frequenza con cui il gestore della scalabilità automatica tenta di aggiungere nodi.
  • Errori di provisioning: kubernetes.io/autoscaler/cluster_node_provisioning_failed_attempts_count_per_ccc mostra i tentativi di creazione dei nodi non riusciti e i relativi motivi.

Queste metriche utilizzano il tipo di risorsa k8s_entity, dove il valore del campo resource.labels.entity_type è ComputeClass. Il valore del campo resource.labels.entity_name indica il nome di ComputeClass. Se il campo entity_name ha una stringa vuota ("") come valore, la metrica riguarda le decisioni del gestore della scalabilità automatica del cluster che non sono correlate a una ComputeClass.

Utilizza Esplora metriche per filtrare e raggruppare i risultati in base al campo entity_name. Ad esempio, utilizza la stringa resource.labels.entity_name = "" per visualizzare le attività che non sono correlate a ComputeClasses e le etichette delle metriche (come reason) per capire se i problemi di scalabilità verticale sono specifici di una ComputeClass.

Per esempi di query, vedi Monitorare il provisioning dei nodi e Monitorare lo stato dei pod in attesa.

Visualizza errori

Spesso puoi diagnosticare la causa dei problemi di scale up visualizzando i messaggi di errore:

Visualizza gli errori nelle notifiche

Se il problema che hai osservato si è verificato meno di 72 ore fa, visualizza le notifiche relative agli errori nella console Google Cloud . Queste notifiche forniscono informazioni preziose sul motivo per cui il gestore della scalabilità automatica dei cluster non ha eseguito lo scale up e offrono consigli su come risolvere l'errore e visualizzare i log pertinenti per ulteriori indagini.

Per visualizzare le notifiche nella console Google Cloud , completa i seguenti passaggi:

  1. Nella console Google Cloud , vai alla pagina Cluster Kubernetes.

    Vai a Cluster Kubernetes

  2. Controlla la colonna Notifiche. Le seguenti notifiche sono associate ai problemi di scale up:

    • Can't scale up
    • Can't scale up pods
    • Can't scale up a node pool
  3. Fai clic sulla notifica pertinente per visualizzare un riquadro con i dettagli sulla causa del problema e i comportamenti consigliati per risolverlo.

  4. (Facoltativo) Per visualizzare i log di questo evento, fai clic su Log. Questa azione ti porta a Esplora log con una query precompilata per aiutarti a esaminare ulteriormente l'evento di scalabilità. Per saperne di più sul funzionamento degli eventi di scalabilità verticale, consulta Visualizzare gli eventi del gestore della scalabilità automatica dei cluster.

Se i problemi persistono dopo aver esaminato i consigli riportati nella notifica, consulta le tabelle dei messaggi di errore per ulteriore assistenza.

Visualizza gli errori negli eventi

Se il problema che hai osservato si è verificato più di 72 ore fa, visualizza gli eventi in Cloud Logging. Quando si verifica un errore, questo viene spesso registrato in un evento.

Per visualizzare i log del gestore della scalabilità automatica dei cluster nella console Google Cloud , completa i seguenti passaggi:

  1. Nella console Google Cloud , vai alla pagina Cluster Kubernetes.

    Vai a Cluster Kubernetes

  2. Seleziona il nome del cluster che vuoi esaminare per visualizzare la pagina Dettagli cluster.

  3. Nella pagina Dettagli cluster, fai clic sulla scheda Log.

  4. Nella scheda Log, fai clic sulla scheda Log del gestore della scalabilità automatica per visualizzare i log.

  5. (Facoltativo) Per applicare filtri più avanzati per restringere i risultati, fai clic sul pulsante con la freccia sul lato destro della pagina per visualizzare i log in Esplora log.

Per scoprire di più sul funzionamento degli eventi di scale up, consulta Visualizza gli eventi del gestore della scalabilità automatica dei cluster. Per un esempio di come utilizzare Cloud Logging, consulta il seguente esempio di risoluzione dei problemi.

Esempio: risolvi un problema che si è verificato più di 72 ore fa

L'esempio seguente mostra come esaminare e risolvere un problema relativo allo scale up di un cluster.

Scenario: nell'ultima ora, un pod è stato contrassegnato come non pianificabile. Il gestore della scalabilità automatica dei cluster non ha eseguito il provisioning di nuovi nodi per pianificare il pod.

Soluzione:

  1. Poiché il problema si è verificato più di 72 ore fa, lo esamini utilizzando Cloud Logging anziché esaminare i messaggi di notifica.
  2. In Cloud Logging, trovi i dettagli di logging per gli eventi del gestore della scalabilità automatica del cluster, come descritto in Visualizza gli errori negli eventi.
  3. Cerchi gli eventi scaleUp che contengono il pod che stai esaminando nel campo triggeringPods. Puoi filtrare le voci di log, ad esempio in base a un determinato valore del campo JSON. Scopri di più in Query sui log avanzate.

  4. Non trovi eventi di scale up. Tuttavia, se lo facessi, potresti provare a trovare un EventResult che contenga lo stesso eventId dell'evento scaleUp. Puoi quindi esaminare il campo errorMsg e consultare l'elenco dei possibili messaggi di errore di scaleUp.

  5. Poiché non hai trovato eventi scaleUp, continui a cercare eventi noScaleUp ed esamini i seguenti campi:

    • unhandledPodGroups: contiene informazioni sul pod (o sul controller del pod).
    • reason: fornisce motivi globali che indicano che lo scale up potrebbe essere bloccato.
    • skippedMigs: fornisce i motivi per cui alcuni MIG potrebbero essere ignorati.
  6. Trovi un evento noScaleUp per il tuo pod e tutti i MIG nel campo rejectedMigs hanno lo stesso ID messaggio del motivo "no.scale.up.mig.failing.predicate" con due parametri: "NodeAffinity" e "node(s) did not match node selector".

Risoluzione:

Dopo aver consultato l'elenco dei messaggi di errore, scopri che il gestore della scalabilità automatica dei cluster non può fare lo scale up di un pool di nodi a causa di un predicato di pianificazione non riuscito per i pod in attesa. I parametri sono il nome del predicato non riuscito e il motivo per cui non è riuscito.

Per risolvere il problema, esamini il manifest del pod e scopri che ha un selettore di nodi che non corrisponde ad alcun MIG nel cluster. Elimini il selettore dal manifest del pod e ricrei il pod. Il gestore della scalabilità automatica dei cluster aggiunge un nuovo nodo e il pod viene pianificato.

Risolvi gli errori di scale up

Se utilizzi ComputeClass personalizzate e i problemi di scalabilità verticale sono correlati alle configurazioni dei nodi specifiche definite in ComputeClass, consulta Risolvere i problemi relativi a ComputeClass personalizzate.

Dopo aver identificato l'errore, utilizza le seguenti tabelle per capire cosa lo ha causato e come risolverlo.

Errori di scale up

Puoi trovare i messaggi di errore degli eventi scaleUp nell'evento eventResult corrispondente, nel campo resultInfo.results[].errorMsg.

Quando un'operazione di scale up non riesce perché supera una quota, si verifica un errore di creazione del nodo che attiva un periodo di backoff del sistema, che può durare fino a 30 minuti. Per saperne di più, consulta Periodi di backoff.

Messaggio Dettagli Parametri Mitigazione
"scale.up.error.out.of.resources" Gli errori delle risorse si verificano quando provi a richiedere nuove risorse in una zona che non può soddisfare la tua richiesta a causa dell'attuale non disponibilità di una risorsa di Compute Engine, ad esempio GPU o CPU. ID MIG non riusciti. Segui i passaggi per la risoluzione dei problemi di disponibilità delle risorse nella documentazione di Compute Engine.
"scale.up.error.quota.exceeded" L'evento scaleUp non è riuscito perché non è stato possibile aumentare alcune MIG a causa del superamento della quota di Compute Engine. ID MIG non riusciti. Controlla la scheda Errori del MIG nella console Google Cloud per vedere quale quota viene superata. Dopo aver individuato la quota superata, segui le istruzioni per richiedere un aumento della quota.
"scale.up.error.waiting.for.instances.timeout" Impossibile fare lo scale up del gruppo di istanze gestite a causa del timeout. ID MIG non riusciti. Se le istanze vengono avviate ma non vengono registrate con il control plane, segui i passaggi per la risoluzione dei problemi di registrazione delle istanze. Questo messaggio deve essere temporaneo. Se il problema persiste, contatta l'assistenza clienti Google Cloud per ulteriori indagini.
"scale.up.error.ip.space.exhausted" Impossibile fare lo scale up perché le istanze in alcuni dei gruppi di istanze gestite non hanno altri IP. Ciò significa che il cluster non dispone di spazio di indirizzi IP non allocato sufficiente per aggiungere nuovi nodi o pod. ID MIG non riusciti. Segui i passaggi per la risoluzione dei problemi descritti in Spazio di indirizzi IP liberi insufficiente per i pod.
"scale.up.error.service.account.deleted" Impossibile fare lo scale up perché il account di servizio è stato eliminato. ID MIG non riusciti. Prova ad annullare l'eliminazione del service account. Se la procedura non va a buon fine, contatta l'assistenza clienti Google Cloud per ulteriori indagini.

Motivi di un evento noScaleUp

Un evento noScaleUp viene emesso periodicamente quando nel cluster sono presenti pod non pianificabili e il gestore della scalabilità automatica dei cluster non può fare lo scale up del cluster per pianificare i pod. Gli eventi noScaleUp sono soggetti a determinate condizioni e non coprono tutti i casi possibili.

Motivi principali di NoScaleUp

I messaggi relativi al motivo di primo livello per gli eventi noScaleUp vengono visualizzati nel campo noDecisionStatus.noScaleUp.reason. Il messaggio contiene un motivo di primo livello per cui il gestore della scalabilità automatica dei cluster non può fare lo scale up del cluster.

Messaggio Dettagli Mitigazione
"no.scale.up.in.backoff" Nessuno scale up perché lo scale up è in un periodo di backoff (temporaneamente bloccato). Questo messaggio può essere visualizzato durante gli eventi di scalabilità verticale con un numero elevato di pod. Questo messaggio deve essere temporaneo. Controlla questo errore dopo qualche minuto. Se questo messaggio persiste, contatta l'assistenza clienti Google Cloud per ulteriori indagini.

Motivi di primo livello di NoScaleUp per il provisioning automatico dei nodi

I messaggi relativi al motivo del provisioning automatico dei nodi di primo livello per gli eventi noScaleUp vengono visualizzati nel campo noDecisionStatus.noScaleUp.napFailureReason. Il messaggio contiene un motivo di primo livello per cui il gestore della scalabilità automatica dei cluster non può eseguire il provisioning di nuovi pool di nodi.

Messaggio Dettagli Mitigazione
"no.scale.up.nap.disabled"

Impossibile fare lo scale up del provisioning automatico dei nodi perché il provisioning automatico dei nodi non è abilitato a livello di cluster.

Se il provisioning automatico dei nodi è disabilitato, i nuovi nodi non verranno sottoposti automaticamente a provisioning se il pod in attesa ha requisiti che non possono essere soddisfatti da alcun node pool esistente.

Rivedi la configurazione del cluster e valuta la possibilità di attivare il provisioning automatico dei nodi.

Motivi a livello di MIG per cui non è stato eseguito lo scale up

I messaggi relativi ai motivi a livello di MIG per gli eventi noScaleUp vengono visualizzati nei campi noDecisionStatus.noScaleUp.skippedMigs[].reason e noDecisionStatus.noScaleUp.unhandledPodGroups[].rejectedMigs[].reason. Il messaggio contiene un motivo per cui il gestore della scalabilità automatica dei cluster non può aumentare le dimensioni di un determinato MIG.

Messaggio Dettagli Parametri Mitigazione
"no.scale.up.mig.skipped" Impossibile fare lo scale up di un MIG perché è stato ignorato durante la simulazione. Motivi per cui il MIG è stato ignorato (ad esempio, manca un requisito del pod). Esamina i parametri inclusi nel messaggio di errore e risolvi il motivo per cui il MIG è stato ignorato.
"no.scale.up.mig.failing.predicate" Impossibile fare lo scale up di un pool di nodi a causa di un predicato di pianificazione non riuscito per i pod in attesa. Nome del predicato non riuscito e motivi dell'errore. Rivedi i requisiti del pod, ad esempio regole di affinità, incompatibilità o tolleranze e requisiti delle risorse.

Motivi per cui il provisioning automatico dei nodi a livello di gruppo di pod NoScaleUp

I messaggi relativi ai motivi del provisioning automatico dei nodi a livello di gruppo di pod per gli eventi noScaleUp vengono visualizzati nel campo noDecisionStatus.noScaleUp.unhandledPodGroups[].napFailureReasons[]. Il messaggio contiene un motivo per cui il gestore della scalabilità automatica dei cluster non può eseguire il provisioning di un nuovo node pool per pianificare un particolare gruppo di pod.

Messaggio Dettagli Parametri Mitigazione
"no.scale.up.nap.pod.gpu.no.limit.defined" Il provisioning automatico dei nodi non ha potuto eseguire il provisioning di alcun gruppo di nodi perché un pod in attesa ha una richiesta GPU, ma i limiti delle risorse GPU non sono definiti a livello di cluster. Tipo di GPU richiesto. Esamina la richiesta GPU del pod in attesa e aggiorna la configurazione del provisioning automatico dei nodi a livello di cluster per i limiti GPU.
"no.scale.up.nap.pod.gpu.type.not.supported" Il provisioning automatico dei nodi non ha eseguito il provisioning di alcun gruppo di nodi per il pod perché contiene richieste per un tipo di GPU sconosciuto. Tipo di GPU richiesto. Controlla la configurazione del pod in attesa per il tipo di GPU per assicurarti che corrisponda a un tipo di GPU supportato.
"no.scale.up.nap.pod.zonal.resources.exceeded" Il provisioning automatico dei nodi non ha eseguito il provisioning di alcun gruppo di nodi per il pod in questa zona perché così facendo violerebbe i limiti massimi di risorse a livello di cluster, supererebbe le risorse disponibili nella zona o non esiste un tipo di macchina che possa soddisfare la richiesta. Nome della zona considerata. Rivedi e aggiorna i limiti massimi delle risorse a livello di cluster, le richieste di risorse dei pod o le zone disponibili per il provisioning automatico dei nodi.
"no.scale.up.nap.pod.zonal.failing.predicates" Il provisioning automatico dei nodi non ha eseguito il provisioning di alcun gruppo di nodi per il pod in questa zona a causa di predicati non funzionanti. Nome della zona considerata e motivi per cui i predicati non sono riusciti. Rivedi i requisiti del pod in attesa, ad esempio regole di affinità, incompatibilità, tolleranze o requisiti delle risorse.

Eseguire ulteriori indagini

Le sezioni seguenti forniscono indicazioni su come utilizzare Esplora log e gcpdiag per ottenere ulteriori informazioni sugli errori.

Esamina gli errori in Esplora log

Se vuoi esaminare ulteriormente il messaggio di errore, visualizza i log specifici dell'errore:

  1. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

  2. Nel riquadro query, inserisci la seguente query:

    resource.type="k8s_cluster"
    log_id("container.googleapis.com/cluster-autoscaler-visibility")
    jsonPayload.resultInfo.results.errorMsg.messageId="ERROR_MESSAGE"
    

    Sostituisci ERROR_MESSAGE con il messaggio che vuoi esaminare. Ad esempio, scale.up.error.out.of.resources.

  3. Fai clic su Esegui query.

Esegui il debug di alcuni errori con gcpdiag

gcpdiag è uno strumento open source creato con il supporto dei tecnici di Google Cloud. Non è un prodotto Google Cloud supportato ufficialmente.

Se hai riscontrato uno dei seguenti messaggi di errore, puoi utilizzare gcpdiag per risolvere il problema:

  • scale.up.error.out.of.resources
  • scale.up.error.quota.exceeded
  • scale.up.error.waiting.for.instances.timeout
  • scale.up.error.ip.space.exhausted
  • scale.up.error.service.account.deleted

Per un elenco e una descrizione di tutti i flag dello strumento gcpdiag, consulta le istruzioni per l'utilizzo di gcpdiag.

Risolvi errori di scale up complessi

Le sezioni seguenti ti aiutano a risolvere gli errori che richiedono più passaggi o che non hanno un messaggio di evento associato dal gestore della scalabilità automatica del cluster.

Il pod non è adatto al nodo

Sintomi:

I pod rimangono in uno stato Pending con il messaggio di errore PodUnschedulable o il cluster mostra il messaggio di errore Pods unschedulable e il gestore della scalabilità automatica dei cluster non esegue lo scale up per aggiungere nodi.

Causa:

Il gestore della scalabilità automatica dei cluster aggiunge nodi a un pool di nodi solo se il tipo di macchina fornisce risorse sufficienti, come CPU, GPU, memoria e spazio di archiviazione, per un pod in attesa. Se le richieste di risorse di un pod superano le risorse di un singolo nodo, il gestore della scalabilità automatica dei cluster non esegue lo scale up perché il pod non può comunque essere inserito in un nuovo nodo.

Inoltre, le risorse allocabili di un nodo sono inferiori alle risorse totali perché i componenti di sistema ne riservano una parte. Per saperne di più su come GKE calcola le risorse allocabili, consulta Risorse allocabili sui nodi.

Risoluzione:

Per verificare se le richieste di risorse di un pod superano le risorse fornite dai nodi e risolvere il problema, completa i seguenti passaggi. Questo esempio controlla le risorse della CPU, ma gli stessi passaggi si applicano alle risorse di GPU, memoria e spazio di archiviazione:

  1. Nella console Google Cloud , vai alla pagina Workload.

    Vai a Carichi di lavoro

  2. Fai clic sul messaggio di errore PodUnschedulable.

  3. Nel riquadro Dettagli, fai clic sul nome del pod. Se sono presenti più pod, inizia dal primo e ripeti la seguente procedura per ogni pod.

  4. Nella pagina Dettagli pod, fai clic sulla scheda YAML.

  5. Prendi nota delle richieste di risorse di ogni container nel pod per trovare le richieste di risorse totali. Ad esempio, nella seguente configurazione del pod, il pod richiede 2 vCPU:

    resources:
      limits:
        cpu: "3"
      requests:
        cpu: "2"
    
  6. Visualizza i dettagli pool di nodi dal cluster con il pod non pianificato:

    1. Nella console Google Cloud , vai alla pagina Cluster Kubernetes.

      Vai a Cluster Kubernetes

    2. Fai clic sul nome del cluster con il messaggio di errore Pods unschedulable.

    3. Nella pagina Dettagli cluster, fai clic sulla scheda Nodi.

    4. Nella sezione Pool di nodi, prendi nota del valore nella colonna Tipo di macchina, ad esempio n1-standard-1.

  7. Confronta la richiesta di risorse con le vCPU fornite dal tipo di macchina. Ad esempio, se un pod richiede 2 vCPU, ma i nodi disponibili utilizzano il tipo di macchina n1-standard-1, i nodi hanno solo 1 vCPU. Con una configurazione di questo tipo, il gestore della scalabilità automatica dei cluster non attiva uno scale up perché il pod non può ancora essere inserito in un nuovo nodo. Per saperne di più sui tipi di macchine disponibili, consulta la guida alle risorse e al confronto per le famiglie di macchine nella documentazione di Compute Engine.

  8. Risolvi la mancata corrispondenza in base alle esigenze del tuo workload:

    • Se il pod richiede le risorse richieste: crea un pool di nodi con un tipo di macchina in grado di supportare le richieste di risorse del pod.
    • Se le richieste di risorse del pod non sono accurate: aggiorna la definizione del pod in modo che possa essere inserito nei nodi esistenti.

I cluster non integri impediscono lo scale up

Sintomi:

Il gestore della scalabilità automatica dei cluster interrompe tutte le operazioni di scalabilità e ConfigMap cluster-autoscaler-status contiene un evento con il tipo Warning e ClusterUnhealthy elencato come motivo.

Per visualizzare l'oggetto ConfigMap cluster-autoscaler-status, esegui questo comando:

kubectl describe configmap cluster-autoscaler-status -n kube-system

Causa:

Il gestore della scalabilità automatica dei cluster non esegue lo scale up se ritiene che un cluster non sia integro. Il gestore della scalabilità automatica dei cluster determina l'integrità del cluster in base al rapporto tra nodi integri e pronti, non in base all'integrità del control plane. Se il 45% dei nodi di un cluster non è integro o non è pronto, il gestore della scalabilità automatica del cluster interrompe tutte le operazioni.

Il gestore della scalabilità automatica dei cluster considera un nodo pronto come NotReady anche quando il nodo ha un taint con il prefisso ignore-taint.cluster-autoscaler.kubernetes.io/. Il gestore della scalabilità automatica dei cluster considera il nodo come NotReady finché la taint è presente.

Risoluzione:

Per risolvere il problema, riduci il numero di nodi non integri eseguendo una o entrambe le seguenti azioni:

  • Esamina e ripara i nodi non integri o NotReady in modo che meno del 45% dei nodi nel cluster non sia integro.
  • Se i nodi pronti hanno un taint con il prefisso ignore-taint.cluster-autoscaler.kubernetes.io/, rimuovi il taint.

Passaggi successivi