Visualizzare gli eventi di scalabilità automatica del cluster


Questa pagina fornisce informazioni sugli eventi di visibilità emessi dal gestore della scalabilità automatica dei cluster in Google Kubernetes Engine (GKE). Analizzando questi eventi, puoi ottenere informazioni su come il gestore della scalabilità automatica del cluster gestisce la scalabilità del cluster e comprendere i motivi alla base delle sue decisioni.

Il gestore della scalabilità automatica del cluster GKE emette eventi di visibilità, disponibili come voci di log in Cloud Logging. Gli eventi descritti in questa guida sono separati dagli eventi Kubernetes prodotti dal gestore della scalabilità automatica del cluster.

Requisiti

Per visualizzare gli eventi del gestore della scalabilità automatica, devi attivare Cloud Logging nel tuo cluster. Gli eventi non verranno generati se la registrazione è disabilitata.

Visualizzazione degli eventi

Gli eventi di visibilità per il gestore della scalabilità automatica del cluster vengono archiviati in un log Cloud Logging nello stesso progetto in cui si trova il cluster GKE. Puoi visualizzare questi eventi anche dalle notifiche nella pagina Google Kubernetes Engine della console Google Cloud.

Visualizzazione dei log degli eventi di visibilità

Per visualizzare i log:

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

    Vai ai cluster Kubernetes

  2. Seleziona il nome del cluster 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 di Autoscaler 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.

Visualizzazione delle notifiche relative agli eventi di visibilità

Per visualizzare le notifiche degli eventi di visibilità nella pagina Google Kubernetes Engine, svolgi i seguenti passaggi:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud:

    Vai a Google Kubernetes Engine

  2. Controlla la colonna Notifiche per cluster specifici per trovare le notifiche relative al ridimensionamento.

  3. Fai clic sulla notifica per visualizzare informazioni dettagliate, azioni consigliate e accedere ai log per questo evento.

Tipi di eventi

Tutti gli eventi registrati sono in formato JSON e sono disponibili nel campo jsonPayload di una voce di log. Tutti i timestamp negli eventi sono timestamp in secondi UNIX.

Di seguito è riportato un riepilogo dei tipi di eventi emessi dal gestore della scalabilità automatica del cluster:

Tipo di evento Descrizione
status Si verifica periodicamente e descrive le dimensioni di tutti i pool di nodi con scalabilità automatica e le dimensioni target di tutti i pool di nodi con scalabilità automatica osservate dal gestore della scalabilità automatica del cluster.
scaleUp Si verifica quando il gestore della scalabilità automatica del cluster esegue lo scale up del cluster.
scaleDown Si verifica quando il gestore della scalabilità automatica del cluster esegue lo scale down del cluster.
eventResult Si verifica quando un evento scaleUp o scaleDown viene completato correttamente o non correttamente.
nodePoolCreated Si verifica quando il gestore della scalabilità automatica del cluster con il provisioning automatico dei nodi abilitato crea un nuovo pool di nodi.
nodePoolDeleted Si verifica quando il gestore della scalabilità automatica dei cluster con provisioning automatico dei nodi abilitato elimina un pool di nodi.
noScaleUp Si verifica quando nel cluster sono presenti pod non pianificabili e il gestore della scalabilità automatica del cluster non può eseguire lo scale up del cluster per ospitare i pod.
noScaleDown Si verifica quando l'eliminazione di alcuni nodi è bloccata dal gestore della scalabilità automatica del cluster.

Evento di stato

Viene emesso periodicamente un evento status che descrive le dimensioni effettive di tutti i pool di nodi con scalabilità automatica e le dimensioni target di tutti i pool di nodi con scalabilità automatica come osservato dal gestore della scalabilità automatica dei cluster.

Esempio

Il seguente esempio di log mostra un evento status:

{
  "status": {
    "autoscaledNodesCount": 4,
    "autoscaledNodesTarget": 4,
    "measureTime": "1582898536"
  }
}

Evento ScaleUp

Viene emesso un evento scaleUp quando il gestore della scalabilità automatica del cluster esegue lo scale up del cluster. Il gestore della scalabilità automatica aumenta le dimensioni dei pool di nodi del cluster eseguendo lo scale up dei gruppi di istanze gestite (MIG) sottostanti per i pool di nodi. Per scoprire di più su come funziona lo scale up, consulta la sezione Come funziona lo scale up? nelle domande frequenti sul gestore della scalabilità automatica dei cluster Kubernetes.

L'evento contiene informazioni su quali MIG sono stati sottoposti a scalabilità, su quanti nodi e su quali pod non pianificabili hanno attivato l'evento.

L'elenco dei pod di attivazione viene troncato a 50 voci arbitrarie. Il numero effettivo di pod attivati è disponibile nel campo triggeringPodsTotalCount.

Esempio

Il seguente esempio di log mostra un evento scaleUp:

{
  "decision": {
    "decideTime": "1582124907",
    "eventId": "ed5cb16d-b06f-457c-a46d-f75dcca1f1ee",
    "scaleUp": {
      "increasedMigs": [
        {
          "mig": {
            "name": "test-cluster-default-pool-a0c72690-grp",
            "nodepool": "default-pool",
            "zone": "us-central1-c"
          },
          "requestedNodes": 1
        }
      ],
      "triggeringPods": [
        {
          "controller": {
            "apiVersion": "apps/v1",
            "kind": "ReplicaSet",
            "name": "test-85958b848b"
          },
          "name": "test-85958b848b-ptc7n",
          "namespace": "default"
        }
      ],
      "triggeringPodsTotalCount": 1
    }
  }
}

Evento ScaleDown

Viene emesso un evento scaleDown quando il gestore della scalabilità automatica del cluster esegue il ridimensionamento del cluster. Per scoprire di più su come funziona fare lo scale down il basso, consulta la sezione Come funziona fare lo scale down verso il basso? nelle domande frequenti sul gestore della scalabilità automatica dei cluster Kubernetes.

I campi cpuRatio e memRatio descrivono l'utilizzo della CPU e della memoria del nodo in percentuale. Questo utilizzo è la somma delle richieste di pod divisa per il numero di nodi allocabili, non l'utilizzo reale.

L'elenco dei pod espulsi viene troncato a 50 voci arbitrarie. Il numero effettivo di pod espulsi è disponibile nel campo evictedPodsTotalCount.

Utilizza la seguente query per verificare se il gestore della scalabilità automatica del cluster ha ridotto il numero di nodi:

resource.type="k8s_cluster" \
resource.labels.location=COMPUTE_REGION \
resource.labels.cluster_name=CLUSTER_NAME \
log_id("container.googleapis.com/cluster-autoscaler-visibility") \
( "decision" NOT "noDecisionStatus" )

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.

  • COMPUTE_REGION: la regione Compute Engine del cluster, ad esempio us-central1.

Esempio

Il seguente esempio di log mostra un evento scaleDown:

{
  "decision": {
    "decideTime": "1580594665",
    "eventId": "340dac18-8152-46ff-b79a-747f70854c81",
    "scaleDown": {
      "nodesToBeRemoved": [
        {
          "evictedPods": [
            {
              "controller": {
                "apiVersion": "apps/v1",
                "kind": "ReplicaSet",
                "name": "kube-dns-5c44c7b6b6"
              },
              "name": "kube-dns-5c44c7b6b6-xvpbk"
            }
          ],
          "evictedPodsTotalCount": 1,
          "node": {
            "cpuRatio": 23,
            "memRatio": 5,
            "mig": {
              "name": "test-cluster-default-pool-c47ef39f-grp",
              "nodepool": "default-pool",
              "zone": "us-central1-f"
            },
            "name": "test-cluster-default-pool-c47ef39f-p395"
          }
        }
      ]
    }
  }
}

Puoi anche visualizzare l'evento scale-down sui nodi senza carichi di lavoro in esecuzione (in genere solo i pod di sistema creati dai DaemonSet).

Utilizza la seguente query per visualizzare i log degli eventi:

resource.type="k8s_cluster" \
resource.labels.project_id=PROJECT_ID \
resource.labels.location=COMPUTE_REGION \
resource.labels.cluster_name=CLUSTER_NAME \
severity>=DEFAULT \
logName="projects/PROJECT_ID/logs/events" \
("Scale-down: removing empty node")

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto.

  • CLUSTER_NAME: il nome del cluster.

  • COMPUTE_REGION: la regione Compute Engine del cluster, ad esempio us-central1.

Evento EventResult

Un evento eventResult viene emesso quando un evento scaleUp o scaleDown si completa correttamente o non correttamente. Questo evento contiene un elenco di ID evento (dal campo eventId negli eventi scaleUp o scaleDown), insieme ai messaggi di errore. Un messaggio di errore vuoto indica che l'evento è stato completato correttamente. Un elenco di eventi eventResult viene aggregato nel campo results.

Per diagnosticare gli errori, consulta le sezioni Errori di scale up e Errori di scale down.

Esempio

Il seguente esempio di log mostra un evento eventResult:

{
  "resultInfo": {
    "measureTime": "1582878896",
    "results": [
      {
        "eventId": "2fca91cd-7345-47fc-9770-838e05e28b17"
      },
      {
        "errorMsg": {
          "messageId": "scale.down.error.failed.to.delete.node.min.size.reached",
          "parameters": [
            "test-cluster-default-pool-5c90f485-nk80"
          ]
        },
        "eventId": "ea2e964c-49b8-4cd7-8fa9-fefb0827f9a6"
      }
    ]
  }
}

Evento NodePoolCreated

Viene emesso un evento nodePoolCreated quando il gestore della scalabilità automatica dei cluster con il provisioning automatico dei nodi attivo crea un nuovo pool di nodi. Questo evento contiene il nome del pool di nodi creato e un elenco dei relativi MIG sottostanti. Se il pool di nodi è stato creato a causa di un evento scaleUp, il eventId dell'evento scaleUp corrispondente è incluso nel campo triggeringScaleUpId.

Esempio

Il seguente esempio di log mostra un evento nodePoolCreated:

{
  "decision": {
    "decideTime": "1585838544",
    "eventId": "822d272c-f4f3-44cf-9326-9cad79c58718",
    "nodePoolCreated": {
      "nodePools": [
        {
          "migs": [
            {
              "name": "test-cluster-nap-n1-standard--b4fcc348-grp",
              "nodepool": "nap-n1-standard-1-1kwag2qv",
              "zone": "us-central1-f"
            },
            {
              "name": "test-cluster-nap-n1-standard--jfla8215-grp",
              "nodepool": "nap-n1-standard-1-1kwag2qv",
              "zone": "us-central1-c"
            }
          ],
          "name": "nap-n1-standard-1-1kwag2qv"
        }
      ],
      "triggeringScaleUpId": "d25e0e6e-25e3-4755-98eb-49b38e54a728"
    }
  }
}

Evento NodePoolDeleted

Viene emesso un evento nodePoolDeleted quando il gestore della scalabilità automatica dei cluster con il provisioning automatico dei nodi attivo elimina un pool di nodi.

Esempio

Il seguente esempio di log mostra un evento nodePoolDeleted:

{
  "decision": {
    "decideTime": "1585830461",
    "eventId": "68b0d1c7-b684-4542-bc19-f030922fb820",
    "nodePoolDeleted": {
      "nodePoolNames": [
        "nap-n1-highcpu-8-ydj4ewil"
      ]
    }
  }
}

Evento NoScaleUp

Un evento noScaleUp viene emesso periodicamente quando nel cluster sono presenti pod non pianificabili e il gestore della scalabilità automatica del cluster non può eseguire lo scale up del cluster per ospitare i pod.

  • Gli eventi noScaleUp sono di tipo best effort, ovvero non coprono tutti i possibili motivi per cui il gestore della scalabilità automatica dei cluster non può eseguire lo scale up.
  • Gli eventi noScaleUp vengono limitati per limitare il volume dei log prodotti. Ogni motivo persistente viene emesso solo ogni paio di minuti.
  • Tutti i motivi possono essere suddivisi in modo arbitrario in più eventi. Ad esempio, non è garantito che tutti i motivi di rifiuto del gruppo MIG per un singolo gruppo di pod verranno visualizzati nello stesso evento.
  • L'elenco dei gruppi di pod non gestiti viene troncato a 50 voci arbitrarie. Il numero effettivo di gruppi di pod non gestiti è disponibile nel campo unhandledPodGroupsTotalCount.

Campi Motivo

I seguenti campi aiutano a spiegare perché non è stato eseguito lo scale up:

  • reason: fornisce un motivo globale per cui è stato impedito lo scale up del gestore della scalabilità automatica dei cluster. Per maggiori dettagli, consulta la sezione Ragioni di primo livello NoScaleUp.
  • napFailureReason: fornisce un motivo globale che impedisce al gestore della scalabilità automatica dei cluster di eseguire il provisioning di pool di nodi aggiuntivi (ad esempio, il provisioning automatico dei nodi è disabilitato). Per maggiori dettagli, consulta la sezione Motivi del provisioning automatico dei nodi di primo livello NoScaleUp.
  • skippedMigs[].reason: fornisce informazioni sul motivo per cui un determinato gruppo di istanze gestite è stato saltato. Il gestore della scalabilità automatica dei cluster ignora alcuni MIG per qualsiasi pod durante un tentativo di scale up (ad esempio perché l'aggiunta di un altro nodo supererebbe i limiti di risorse a livello di cluster). Per maggiori dettagli, consulta la sezione Motivi di NoScaleUp a livello di MIG.
  • unhandledPodGroups: contiene informazioni sul motivo per cui un determinato gruppo di pod non pianificabili non attiva lo scale up. I pod sono raggruppati in base al loro controller immediato. I pod senza un controller sono raggruppati da soli. Ogni gruppo di pod contiene un pod di esempio arbitrario e il numero di pod nel gruppo, nonché i seguenti motivi:
    • napFailureReasons: motivi per cui il gestore della scalabilità automatica dei cluster non può eseguire il provisioning di un nuovo pool di nodi per soddisfare le esigenze di questo gruppo di pod (ad esempio, i pod hanno vincoli di affinità). Per maggiori dettagli, consulta la sezione Motivi per cui non è stato eseguito lo scale up a livello di pod con il provisioning automatico dei nodi.
    • rejectedMigs[].reason: motivi per MIG per cui il gestore della scalabilità automatica dei cluster non può aumentare le dimensioni di un determinato MIG per adattarsi a questo gruppo di pod (ad esempio, il nodo del MIG è troppo piccolo per i pod). Per maggiori dettagli, consulta la sezione Motivi di NoScaleUp a livello di MIG.

Esempio

Il seguente esempio di log mostra un evento noScaleUp:

{
  "noDecisionStatus": {
    "measureTime": "1582523362",
    "noScaleUp": {
      "skippedMigs": [
        {
          "mig": {
            "name": "test-cluster-nap-n1-highmem-4-fbdca585-grp",
            "nodepool": "nap-n1-highmem-4-1cywzhvf",
            "zone": "us-central1-f"
          },
          "reason": {
            "messageId": "no.scale.up.mig.skipped",
            "parameters": [
              "max cluster cpu limit reached"
            ]
          }
        }
      ],
      "unhandledPodGroups": [
        {
          "napFailureReasons": [
            {
              "messageId": "no.scale.up.nap.pod.zonal.resources.exceeded",
              "parameters": [
                "us-central1-f"
              ]
            }
          ],
          "podGroup": {
            "samplePod": {
              "controller": {
                "apiVersion": "v1",
                "kind": "ReplicationController",
                "name": "memory-reservation2"
              },
              "name": "memory-reservation2-6zg8m",
              "namespace": "autoscaling-1661"
            },
            "totalPodCount": 1
          },
          "rejectedMigs": [
            {
              "mig": {
                "name": "test-cluster-default-pool-b1808ff9-grp",
                "nodepool": "default-pool",
                "zone": "us-central1-f"
              },
              "reason": {
                "messageId": "no.scale.up.mig.failing.predicate",
                "parameters": [
                  "NodeResourcesFit",
                  "Insufficient memory"
                ]
              }
            }
          ]
        }
      ],
      "unhandledPodGroupsTotalCount": 1
    }
  }
}

Evento NoScaleDown

Un evento noScaleDown viene emesso periodicamente quando esistono nodi la cui eliminazione è bloccata dal gestore della scalabilità automatica del cluster.

  • I nodi che non possono essere rimossi perché il loro utilizzo è elevato non sono inclusi negli eventi noScaleDown.
  • Gli eventi noScaleDown sono di tipo best effort, ovvero non coprono tutti i possibili motivi per cui il gestore della scalabilità automatica dei cluster non può fare lo scale down.
  • Gli eventi NoScaleDown vengono limitati per limitare il volume dei log prodotti. Ogni motivo persistente verrà emesso solo ogni due minuti.
  • L'elenco dei nodi viene troncato a 50 voci arbitrarie. Il numero effettivo di nodi è disponibile nel campo nodesTotalCount.

Campi Motivo

I seguenti campi aiutano a spiegare perché non è stato eseguito lo scale down:

  • reason: fornisce un motivo globale per cui è stato impedito lo scale down del gestore della scalabilità automatica dei cluster (ad esempio, un periodo di backoff dopo lo scale up recente). Per maggiori dettagli, consulta la sezione Motivi di primo livello di NoScaleDown.
  • nodes[].reason: fornisce i motivi per ogni nodo per cui al gestore della scalabilità automatica dei cluster è stato impedito di eliminare un determinato nodo (ad esempio, non c'è un luogo dove spostare i pod del nodo). Per maggiori dettagli, consulta la sezione Motivi a livello di nodo NoScaleDown.

Esempio

Il seguente esempio di log mostra un evento noScaleDown:

{
  "noDecisionStatus": {
    "measureTime": "1582858723",
    "noScaleDown": {
      "nodes": [
        {
          "node": {
            "cpuRatio": 42,
            "mig": {
              "name": "test-cluster-default-pool-f74c1617-grp",
              "nodepool": "default-pool",
              "zone": "us-central1-c"
            },
            "name": "test-cluster-default-pool-f74c1617-fbhk"
          },
          "reason": {
            "messageId": "no.scale.down.node.no.place.to.move.pods"
          }
        }
      ],
      "nodesTotalCount": 1,
      "reason": {
        "messageId": "no.scale.down.in.backoff"
      }
    }
  }
}

Messaggi

Gli eventi emessi dal gestore della scalabilità automatica del cluster utilizzano messaggi con parametri per fornire spiegazioni sull'evento. Il campo parameters è disponibile insieme al campo messageId, ad esempio in questo log di esempio per un evento NoScaleUp.

Questa sezione fornisce descrizioni di vari messageId e dei relativi parametri. Tuttavia, questa sezione non contiene tutti i messaggi possibili e può essere estesa in qualsiasi momento.

Errori di ScaleUp

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

Messaggio Dettagli Parametri Attenuazione
"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 indisponibilità di una risorsa Compute Engine, ad esempio GPU o CPU. ID MIG non riusciti. Segui la procedura di 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 alcuni MIG per il superamento della quota Compute Engine. ID MIG non riusciti. Controlla la scheda Errori del gruppo di istanze gestite nella console Google Cloud per vedere quale quota viene superata. Dopo aver scoperto quale quota viene superata, segui le istruzioni per richiedere un aumento della quota.
"scale.up.error.waiting.for.instances.timeout" Impossibile eseguire lo scale up del gruppo di istanze gestite a causa del timeout. ID MIG non riusciti. Questo messaggio dovrebbe essere transitorio. Se il problema persiste, contatta l'assistenza clienti Google Cloud per ulteriori accertamenti.
"scale.up.error.ip.space.exhausted" Impossibile fare lo scale up perché le istanze in alcuni gruppi di istanze gestite hanno esaurito gli indirizzi IP. Ciò significa che il cluster non dispone di uno spazio di indirizzi IP non allocati sufficiente da utilizzare per aggiungere nuovi nodi o pod. ID MIG non riusciti. Segui la procedura di risoluzione dei problemi descritta in Spazio indirizzi IP non sufficiente per i pod.
"scale.up.error.service.account.deleted" Impossibile fare lo scale up perché l'account di servizio è stato eliminato. ID MIG non riusciti. Prova a annullare l'eliminazione dell'account di servizio. Se la procedura non va a buon fine, contatta l'assistenza clienti Google Cloud per ulteriori accertamenti.

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ò eseguire lo scale up del cluster per pianificare i pod. Gli eventi noScaleUp sono basati sul criterio del massimo impegno e non coprono tutti i casi possibili.

Motivi di primo livello di NoScaleUp

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

Messaggio Dettagli Attenuazione
"no.scale.up.in.backoff" Non è stato fatto lo scale up perché è in un periodo di backoff (temporaneamente bloccato). Questo messaggio può verificarsi durante gli eventi di scalata con un numero elevato di pod. Questo messaggio dovrebbe essere transitorio. Controlla questo errore dopo qualche minuto. Se il messaggio persiste, contatta l'assistenza clienti Google Cloud per ulteriori indagini.

Motivi del provisioning automatico dei nodi di primo livello NoScaleUp

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 Attenuazione
"no.scale.up.nap.disabled"

Non è stato possibile eseguire 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, il provisioning dei nuovi nodi non verrà eseguito automaticamente se il pod in attesa contiene requisiti che non possono essere soddisfatti dai pool di nodi esistenti.

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

Motivi di NoScaleUp a livello di MIG

I messaggi di motivo 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 gruppo di istanze gestite.

Messaggio Dettagli Parametri Attenuazione
"no.scale.up.mig.skipped" Impossibile fare lo scale up di un gruppo di istanze gestite perché è stato ignorato durante la simulazione. Motivi per cui il MIG è stato ignorato (ad esempio, manca un requisito per i pod). Esamina i parametri inclusi nel messaggio di errore e risolvi il motivo per cui la MIG è stata ignorata.
"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 con errore e motivi dell'errore. Esamina i requisiti del pod, ad esempio regole di affinità, incompatibilità o tolleranze e requisiti delle risorse.

Motivi per cui non è stato eseguito lo scale up del provisioning automatico dei nodi a livello di gruppo di pod

I messaggi relativi al motivo del provisioning automatico dei nodi a livello di gruppo di pod per gli eventi noScaleUp vengono visualizzati nel 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 pool di nodi per pianificare un determinato gruppo di pod.

Messaggio Dettagli Parametri Attenuazione
"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. Rivedi la richiesta GPU del pod in attesa e aggiorna la configurazione del provisioning automatico dei nodi a livello di cluster per i limiti di 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é ciò violerebbe i limiti massimi di risorse a livello di cluster, supererebbe le risorse disponibili nella zona oppure non esiste un tipo di macchina adatto alla 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. Esamina i requisiti del pod in attesa, ad esempio regole di affinità, contaminazioni, tolleranze o requisiti delle risorse.

Errori di riduzione

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

Messaggio di evento Dettagli Parametro Attenuazione
"scale.down.error.failed.to.mark.to.be.deleted" Non è stato possibile contrassegnare un nodo per l'eliminazione. Nome del nodo con errori. Questo messaggio dovrebbe essere transitorio. Se il problema persiste, contatta l'assistenza clienti Google Cloud per ulteriori accertamenti.
"scale.down.error.failed.to.evict.pods" Il gestore della scalabilità automatica dei cluster non può eseguire fare lo scale down perché non è stato possibile rimuovere alcuni pod da un nodo. Nome del nodo con errori. Esamina PodDisruptionBudget per il pod e assicurati che le regole consentano l'eliminazione delle repliche dell'applicazione, se accettabile. Per approfondire, consulta Specificare un budget di interruzione per l'applicazione nella documentazione di Kubernetes.
"scale.down.error.failed.to.delete.node.min.size.reached" Il gestore della scalabilità automatica dei cluster non può eseguire fare lo scale down perché non è stato possibile eliminare un nodo a causa delle dimensioni già minime del cluster. Nome del nodo con errori. Rivedi il valore minimo impostato per la scalabilità automatica pool di nodi e modifica le impostazioni in base alle esigenze. Per saperne di più, consulta la sezione Errore: i nodi del cluster hanno raggiunto le dimensioni minime.

Motivi di un evento noScaleDown

Un evento noScaleDown viene emesso periodicamente quando esistono nodi la cui eliminazione è bloccata dal gestore della scalabilità automatica del cluster. Gli eventi noScaleDown sono di tipo best effort e non coprono tutti i casi possibili.

Motivi di primo livello di NoScaleDown

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

Messaggio di evento Dettagli Attenuazione
"no.scale.down.in.backoff" Il gestore della scalabilità automatica dei cluster non può eseguire fare lo scale down perché è in un periodo di backoff (bloccato temporaneamente).

Questo messaggio dovrebbe essere temporaneo e può verificarsi quando si è verificato un evento di ridimensionamento recente.

Se il messaggio persiste, contatta l'assistenza clienti Google Cloud per ulteriori accertamenti.

"no.scale.down.in.progress"

Il gestore della scalabilità automatica dei cluster non può eseguire fare lo scale down perché era ancora in corso uno fare lo scale down precedente.

Questo messaggio dovrebbe essere transitorio, poiché il pod verrà eventualmente rimosso. Se questo messaggio si verifica di frequente, controlla il periodo di tolleranza prima dell'interruzione per il blocco del ridimensionamento dei pod. Per velocizzare la risoluzione, puoi anche eliminare il pod se non è più necessario.

Motivi a livello di nodo NoScaleDown

I messaggi di motivo a livello di nodo per gli eventi noScaleDown vengono visualizzati in noDecisionStatus.noScaleDown.nodes[].reason field. Il messaggio contiene un motivo per cui il gestore della scalabilità automatica dei cluster non può rimuovere un determinato nodo.

Messaggio di evento Dettagli Parametri Attenuazione
"no.scale.down.node.scale.down.disabled.annotation" Il gestore della scalabilità automatica del cluster non può rimuovere un nodo dal pool di nodi perché il nodo è annotato con cluster-autoscaler.kubernetes.io/scale-down-disabled: true. N/D Il gestore della scalabilità automatica dei cluster salta i nodi con questa annotazione senza considerare il loro utilizzo e questo messaggio viene registrato indipendentemente dal fattore di utilizzo del nodo. Se vuoi che il gestore della scalabilità automatica del cluster riduca questi nodi, rimuovi l'annotazione.
"no.scale.down.node.node.group.min.size.reached"

Il gestore della scalabilità automatica dei cluster non può eseguire fare lo scale down se la dimensione del gruppo di nodi ha superato il limite minimo.

Questo accade perché la rimozione dei nodi violerebbe i limiti minimi di risorse a livello di cluster definiti nelle impostazioni di provisioning automatico dei nodi.

N/D Controlla il valore minimo impostato per la scalabilità automatica del pool di nodi. Se vuoi che il gestore della scalabilità automatica del cluster riduca questo nodo, modifica il valore minimo.
"no.scale.down.node.minimal.resource.limits.exceeded"

Il gestore della scalabilità automatica dei cluster non può fare lo scale down i nodi perché violerebbe i limiti minimi di risorse a livello di cluster.

Questi sono i limiti di risorse impostati per il provisioning automatico dei nodi.

N/D Rivedi i limiti per la memoria e le vCPU e, se vuoi che il gestore della scalabilità automatica dei cluster fare lo scale down questo nodo, diminuisci i limiti.
"no.scale.down.node.no.place.to.move.pods" Il gestore della scalabilità automatica dei cluster non può eseguire fare lo scale down perché non è possibile spostare i pod. N/D Se prevedi che il pod debba essere ripianificato, esamina i requisiti di pianificazione dei pod sul nodo sottoutilizzato per determinare se possono essere spostati in un altro nodo del cluster. Per approfondire, consulta Errore: nessun luogo per spostare i pod.
"no.scale.down.node.pod.not.backed.by.controller"

Il pod sta bloccando fare lo scale down perché non è supportato da un controller.

Nello specifico, il gestore della scalabilità automatica dei cluster non è in grado di fare lo scale down di un nodo sottoutilizzato a causa di un pod che non dispone di un controller riconosciuto. I controller consentiti includono ReplicationController, DaemonSet, Job, StatefulSet o ReplicaSet.

Nome del pod di blocco. Imposta l'annotazione "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" per il pod o definisci un controller accettabile.
"no.scale.down.node.pod.not.safe.to.evict.annotation" Un pod sul nodo ha l'annotazione safe-to-evict=false. Nome del pod di blocco. Se il pod può essere rimosso in sicurezza, modifica il manifest del pod e aggiorna l'annotazione su "cluster-autoscaler.kubernetes.io/safe-to-evict": "true".
"no.scale.down.node.pod.kube.system.unmovable" Il pod sta bloccando fare lo scale down perché è un pod senza DaemonSet, senza mirroring e senza PodDisruptionBudget nello spazio dei nomi kube-system. Nome del pod di blocco.

Per impostazione predefinita, i pod nello spazio dei nomi kube-system non vengono rimossi dal gestore della scalabilità automatica dei cluster.

Per risolvere il problema, aggiungi un PodDisruptionBudget per i pod kube-system o utilizza una combinazione di incompatibilità e tolleranze dei pool di nodi per separare i pod kube-system dai pod dell'applicazione. Per saperne di più, consulta Error: kube-system Pod unmoveable.

"no.scale.down.node.pod.not.enough.pdb" Il pod sta bloccando fare lo scale down perché non dispone di un PodDisruptionBudget sufficiente. Nome del pod di blocco. Rivedi il PodDisruptionBudget per il pod e valuta la possibilità di renderlo meno restrittivo. Per saperne di più, consulta Errore: PodDisruptionBudget non sufficiente.
"no.scale.down.node.pod.controller.not.found" Il pod sta bloccando fare lo scale down perché non è possibile trovare il relativo controller (ad esempio un deployment o un set di repliche). N/D Per determinare quali azioni sono state intraprese che hanno lasciato il pod in esecuzione dopo la rimozione del relativo controller, esamina i log. Per risolvere il problema, elimina manualmente il pod.
"no.scale.down.node.pod.unexpected.error" Il pod sta bloccando fare lo scale down a causa di un errore imprevisto. N/D La causa principale di questo errore è sconosciuta. Contatta l'assistenza clienti Google Cloud per ulteriori accertamenti.

Passaggi successivi