Visualizzazione degli eventi di scalabilità automatica del cluster


In questa pagina vengono descritte le decisioni che il gestore della scalabilità automatica dei cluster di Google Kubernetes Engine (GKE) prende in merito alla scalabilità automatica.

Il gestore della scalabilità automatica dei 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 dei cluster.

Requisiti di disponibilità

La possibilità di visualizzare gli eventi registrati per il gestore della scalabilità automatica dei cluster è disponibile nelle seguenti versioni dei cluster:

Tipo di evento Versione cluster
status, scaleUp, scaleDown, eventResult 1.15.4-gke.7 e versioni successive
nodePoolCreated, nodePoolDeleted 1.15.4-gke.18 e versioni successive
noScaleUp 1.16.6-gke.3 e versioni successive
noScaleDown 1.16.8-gke.2 e versioni successive

Per visualizzare gli eventi del gestore della scalabilità automatica, devi abilitare Cloud Logging nel cluster. Gli eventi non verranno prodotti se Logging è disabilitato.

Visualizzazione degli eventi

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

Visualizzazione dei log eventi di visibilità

Per visualizzare i log, esegui queste operazioni:

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

    Vai a Cluster Kubernetes

  2. Seleziona il nome del cluster per visualizzare la relativa 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 in modo da limitare i risultati, fai clic sul pulsante con la freccia sul lato destro della pagina per visualizzare i log in Esplora log.

Visualizzazione delle notifiche degli eventi di visibilità

Per visualizzare le notifiche degli eventi di visibilità nella pagina di Google Kubernetes Engine, esegui queste operazioni:

  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 notifiche relative alla scalabilità.

  3. Fai clic sulla notifica per informazioni dettagliate, azioni consigliate e per 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 UNIX secondi.

Ecco un riepilogo dei tipi di eventi emessi dal gestore della scalabilità automatica dei 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 di destinazione di tutti i pool di nodi a scalabilità automatica osservate dal gestore della scalabilità automatica dei cluster.
scaleUp Si verifica quando il gestore della scalabilità automatica dei cluster fa lo scale up del cluster.
scaleDown Si verifica quando il gestore della scalabilità automatica dei cluster fa 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 dei 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 il 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 dei cluster non può fare lo scale up del cluster per ospitare i pod.
noScaleDown Si verifica quando sono presenti nodi di cui è stata bloccata l'eliminazione dal gestore della scalabilità automatica dei cluster.

Evento stato

Un evento status viene emesso periodicamente e descrive le dimensioni effettive di tutti i pool di nodi con scalabilità automatica e le dimensioni di destinazione 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 dei cluster fa lo scale up del cluster. Il gestore della scalabilità automatica aumenta le dimensioni dei pool di nodi del cluster facendo lo scale up dei gruppi di istanze gestite sottostanti per i pool di nodi. Per saperne di più su come funziona lo scale up, consulta Come funziona lo scale up? nelle Domande frequenti sul gestore della scalabilità automatica dei cluster Kubernetes.

L'evento contiene informazioni su quali gruppi di istanze gestite è stato fatto lo scale up, sul numero di 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 di attivazione è 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 dei cluster fa lo scale down del cluster. Per saperne di più su come funziona lo fare lo scale down, consulta Come funziona lo fare lo scale down? nelle Domande frequenti sul gestore della scalabilità automatica dei cluster Kubernetes.

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

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

Utilizza la query seguente per verificare se il gestore della scalabilità automatica dei cluster ha fatto lo scale down dei 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 (di solito solo i pod di sistema creati dai DaemonSet). Utilizza la seguente query per visualizzare i log 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: l'ID progetto.

  • CLUSTER_NAME: il nome del cluster.

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

Evento EventResult

Viene emesso un evento eventResult quando un evento scaleUp o scaleDown viene completato 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 è aggregato nel campo results.

Per diagnosticare gli errori, consulta le sezioni Errori di scale up ed 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 abilitato 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 valore eventId dell'evento scaleUp corrispondente viene 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 generato un evento nodePoolDeleted quando il gestore della scalabilità automatica dei cluster con il provisioning automatico dei nodi abilitato 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 generato periodicamente quando sono presenti pod non pianificabili nel cluster e il gestore della scalabilità automatica dei cluster non può fare lo scale up del cluster per ospitare i pod.

  • Gli eventi noScaleUp sono il criterio migliore, ovvero questi eventi non coprono tutti i possibili motivi per cui il gestore della scalabilità automatica dei cluster non può fare lo scale up.
  • Gli eventi noScaleUp vengono limitati per limitare il volume di log generato. Ogni motivo persistente viene emesso ogni due minuti.
  • Tutti i motivi possono essere suddivisi arbitrariamente tra più eventi. Ad esempio, non è garantito che tutti i motivi di un gruppo di istanze gestite rifiutati per un singolo gruppo di pod vengano 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 è indicato nel campo unhandledPodGroupsTotalCount.

Campi del motivo

I seguenti campi aiutano a spiegare perché non si è verificato lo scale up:

  • reason: fornisce un motivo globale per cui il gestore della scalabilità automatica dei cluster non può fare lo scale up. Per informazioni dettagliate, consulta la sezione Motivi di primo livello di NoScaleUp.
  • napFailureReason: fornisce un motivo globale che impedisce al gestore della scalabilità automatica dei cluster di eseguire il provisioning di ulteriori pool di nodi (ad esempio, il provisioning automatico dei nodi è disabilitato). Per informazioni dettagliate, consulta la sezione Motivi per il provisioning automatico dei nodi di primo livello NoScaleUp.
  • skippedMigs[].reason: fornisce informazioni sul motivo per cui un determinato gruppo di istanze gestite è stato ignorato. 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 delle risorse a livello di cluster). Per informazioni dettagliate, consulta la sezione Motivi a livello di MIG NoScaleUp.
  • unhandledPodGroups: contiene informazioni sul motivo per cui un determinato gruppo di pod non pianificabili non attiva lo scale up. I pod vengono raggruppati in base al controller immediato. I pod senza controller si trovano a loro volta in gruppi. Ogni gruppo di pod contiene un pod di esempio arbitrario e il numero di pod nel gruppo, oltre ai 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 ospitare questo gruppo di pod (ad esempio, i pod hanno vincoli di affinità). Per informazioni dettagliate, consulta la sezione Motivi del provisioning automatico dei nodi a livello di pod NoScaleUp
    • rejectedMigs[].reason: motivi per MIG per cui il gestore della scalabilità automatica dei cluster non può aumentare le dimensioni di un particolare gruppo di istanze gestite per ospitare questo gruppo di pod (ad esempio, il nodo del gruppo di istanze gestite è troppo piccolo per i pod). Per informazioni dettagliate, consulta la sezione Motivi a livello di MIG NoScaleUp.

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 generato periodicamente quando sono presenti nodi il cui blocco è bloccato dall'eliminazione dal gestore della scalabilità automatica dei cluster.

  • I nodi che non possono essere rimossi perché il loro utilizzo è elevato non sono inclusi negli eventi noScaleDown.
  • Gli eventi NoScaleDown sono il massimo sforzo, ovvero questi eventi 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 di log generato. Ogni motivo persistente viene emesso ogni due minuti.
  • L'elenco dei nodi viene troncato a 50 voci arbitrarie. Il numero effettivo di nodi è indicato nel campo nodesTotalCount.

Campi del motivo

I seguenti campi aiutano a spiegare il motivo per cui non si è verificato lo scale down:

  • reason: fornisce un motivo globale per cui è stato impedito lo scale down al gestore della scalabilità automatica dei cluster (ad esempio un periodo di backoff dopo lo scale up recente). Per informazioni dettagliate, consulta la sezione Motivi di primo livello di NoScaleDown.
  • nodes[].reason: fornisce i motivi per nodo per cui il gestore della scalabilità automatica dei cluster non è riuscito a eliminare un determinato nodo (ad esempio, non c'è posto in cui spostare i pod del nodo). Per informazioni dettagliate, 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"
      }
    }
  }
}

Risoluzione dei problemi di scalabilità

Questa sezione fornisce indicazioni su come risolvere i problemi relativi agli eventi di scalabilità.

Lo scale up del cluster non funziona

Scenario: ho creato un pod nel cluster, ma è rimasto nello stato In attesa nell'ultima ora. Il gestore della scalabilità automatica dei cluster non ha eseguito il provisioning di nuovi nodi per accogliere il pod.

Soluzione:

  1. In Esplora log, trova i dettagli di logging per gli eventi del gestore della scalabilità automatica dei cluster, come descritto nella sezione Visualizzazione degli eventi.
  2. Cerca eventi scaleUp che contengono il pod desiderato nel campo triggeringPods. Puoi filtrare le voci di log, ad esempio in base a un determinato valore di campo JSON. Scopri di più in Query avanzate dei log.

    1. Trova un elemento EventResult che contenga lo stesso evento eventId dell'evento scaleUp.
    2. Esamina il campo errorMsg e consulta l'elenco di possibili messaggi di errore scaleUp.

    Esempio di errore di scaleUp: per un evento scaleUp, scopri che l'errore è "scale.up.error.quota.exceeded", che indica che "Un evento scaleUp non è riuscito perché non è stato possibile aumentare alcuni gruppi di istanze gestite a causa del superamento della quota". Per risolvere il problema, rivedi le impostazioni della quota e aumenta quelle che stanno per essere superate. Il gestore della scalabilità automatica dei cluster aggiunge un nuovo nodo e il pod viene pianificato.

  3. In caso contrario, cerca eventi noScaleUp ed esamina i seguenti campi:

    • unhandledPodGroups: contiene informazioni sul pod (o il controller del pod).
    • reason: fornisce motivi globali che indicano che lo scale up potrebbe essere bloccato.
    • skippedMigs: fornisce i motivi per cui alcuni gruppi di istanze gestite potrebbero essere ignorati.
  4. Consulta le seguenti sezioni che contengono i possibili motivi per gli eventi noScaleUp:

    Esempio di NoScaleUp: hai trovato un evento noScaleUp per il tuo pod e tutti i MIG nel campo rejectedMigs hanno lo stesso motivo dell'ID messaggio "no.scale.up.mig.failing.predicate" con due parametri:"NodeAffinity" e "node(s) did not match node selector". Dopo aver consultato l'elenco dei messaggi di errore, scopri che "non è possibile fare lo scale up di un gruppo di istanze gestite perché un predicato non è riuscito; i parametri sono il nome del predicato con errori e il motivo dell'errore. Per risolvere il problema, esamini la specifica del pod e scopri che ha un selettore di nodi che non corrisponde ad alcun gruppo di istanze gestite nel cluster. Elimina il selettore dalla specifica del pod e ricrea il pod. Il gestore della scalabilità automatica dei cluster aggiunge un nuovo nodo e il pod è pianificato.

  5. Se non sono presenti eventi noScaleUp, utilizza altri metodi di debug per risolvere il problema.

Lo scale down del cluster non funziona

Scenario: ho un nodo nel mio cluster che ha utilizzato solo il 10% della CPU e della memoria negli ultimi due giorni. Nonostante il basso utilizzo, il gestore della scalabilità automatica del cluster non ha eliminato il nodo come previsto.

Soluzione:

  1. In Esplora log, trova i dettagli di logging per gli eventi del gestore della scalabilità automatica dei cluster, come descritto nella sezione Visualizzazione degli eventi.
  2. Cerca eventi scaleDown che contengono il nodo desiderato nel campo nodesToBeRemoved. Puoi filtrare le voci di log, ad esempio in base a un determinato valore di campo JSON. Scopri di più in Query avanzate dei log.
    1. Nell'evento scaleDown, cerca un evento EventResult che contenga l'evento eventId associato.
    2. Esamina il campo errorMsg e consulta l'elenco di possibili messaggi di errore di scaleDown.
  3. In caso contrario, cerca gli eventi noScaleDown che hanno il nodo desiderato nel campo nodes. Esamina il campo reason per verificare la presenza di eventuali motivi globali che indicano che lo scale down potrebbe essere bloccato.
  4. Consulta le seguenti sezioni che contengono i possibili motivi per gli eventi noScaleDown:

    Esempio NoScaleDown: hai trovato un evento noScaleDown che contiene un motivo per nodo per il tuo nodo. L'ID messaggio è "no.scale.down.node.pod.has.local.storage" ed è presente un solo parametro: "test-single-pod". Dopo aver consultato l'elenco dei messaggi di errore, scopri che il "pod sta bloccando lo fare lo scale down perché richiede spazio di archiviazione locale". Consulta le domande frequenti sul gestore della scalabilità automatica dei cluster Kubernetes e scopri che la soluzione consiste nell'aggiungere un'annotazione "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" al pod. Dopo aver applicato l'annotazione, il gestore della scalabilità automatica dei cluster scala correttamente il cluster.

  5. Se non sono presenti eventi noScaleDown, utilizza altri metodi di debug per risolvere il problema.

Messaggi

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

Questa sezione fornisce le descrizioni di vari tipi di messageId e dei parametri corrispondenti. Tuttavia, questa sezione non contiene tutti i possibili messaggi e potrebbe essere estesa in qualsiasi momento.

Errori di scale up

I messaggi di errore per gli eventi scaleUp sono disponibili nell'evento eventResult corrispondente, nel campo resultInfo.results[].errorMsg.

Message Descrizione Attenuazione
"scale.up.error.out.of.resources" L'evento scaleUp non è riuscito perché non è stato possibile aumentare alcuni gruppi di istanze gestite a causa della mancanza di risorse.

Parametri: ID MIG in errore.

Segui la procedura di risoluzione dei problemi relativi alla disponibilità delle risorse.
"scale.up.error.quota.exceeded" L'evento scaleUp non è riuscito perché non è stato possibile aumentare alcuni gruppi di istanze gestite a causa del superamento della quota di Compute Engine.

Parametri: ID MIG in errore.

Controlla la scheda Errori del gruppo di istanze gestite nella console Google Cloud per vedere quale quota viene superata. Segui le istruzioni per richiedere un aumento della quota.
"scale.up.error.waiting.for.instances.timeout" L'evento scaleUp non è riuscito perché le istanze in alcuni gruppi di istanze gestite non sono apparse in tempo.

Parametri: ID MIG in errore.

Questo messaggio è temporaneo. Se il problema persiste, rivolgiti all'assistenza di Google Cloud per ulteriori indagini.
"scale.up.error.ip.space.exhausted" L'evento scaleUp non è riuscito perché il cluster non dispone di uno spazio di indirizzi IP non allocato sufficiente da utilizzare per aggiungere nuovi nodi o pod.

Parametri: ID MIG in errore.

Consulta i passaggi per la risoluzione dei problemi per risolvere il problema della mancanza di spazio di indirizzi IP per nodi o pod.
"scale.up.error.service.account.deleted" L'evento scaleUp non è riuscito perché un account di servizio utilizzato dal gestore della scalabilità automatica dei cluster è stato eliminato.

Parametri: ID MIG in errore.

Rivolgiti all'assistenza Google Cloud per ulteriori indagini.

Errori di scale down

I messaggi di errore per gli eventi scaleDown sono disponibili nell'evento eventResult corrispondente, nel campo resultInfo.results[].errorMsg.

Message Descrizione Attenuazione
"scale.down.error.failed.to.mark.to.be.deleted" L'evento scaleDown non è riuscito perché non è stato possibile contrassegnare un nodo per l'eliminazione.

Parametri: nome del nodo con errore.

Questo messaggio è temporaneo. Se il problema persiste, rivolgiti all'assistenza di Google Cloud per ulteriori indagini.
"scale.down.error.failed.to.evict.pods" L'evento scaleDown non è riuscito perché non è stato possibile rimuovere alcuni pod da un nodo.

Parametri: nome del nodo con errore.

Consulta le best practice per i budget di interruzione dei pod per assicurarti che le regole consentano l'eliminazione delle repliche delle applicazioni, se accettabile.
"scale.down.error.failed.to.delete.node.min.size.reached" L'evento scaleDown non è riuscito perché non è stato possibile eliminare un nodo poiché le dimensioni del cluster sono già minime.

Parametri: nome del nodo con errore.

Rivedi il valore minimo impostato per la scalabilità automatica del pool di nodi e regola le impostazioni in base alle necessità.

Motivi di un evento NoScaleUp

Motivi di primo livello per NoScaleUp

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

Message Descrizione Attenuazione
"no.scale.up.in.backoff" Si è verificato un errore noScaleUp perché lo scale up è in un periodo di backoff (bloccato temporaneamente). Questo è un messaggio temporaneo che può verificarsi durante gli eventi di scale up con un numero elevato di pod. Se il messaggio persiste, rivolgiti all'assistenza di Google Cloud per ulteriori indagini.

Motivi del provisioning automatico dei nodi di primo livello NoScaleUp

I messaggi dei motivi per il 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.

Message Descrizione Attenuazione
"no.scale.up.nap.disabled" Il provisioning automatico dei nodi non è abilitato a livello di cluster. Se il provisioning automatico dei nodi è disabilitato, non verrà eseguito automaticamente il provisioning dei nuovi nodi se il pod in attesa ha requisiti che non possono essere soddisfatti dai pool di nodi esistenti. Rivedi la configurazione del cluster e vedi Abilitazione del provisioning automatico dei nodi.

Motivi a livello di MIG per NoScaleUp

I messaggi relativi ai motivi a livello di gruppo di istanze gestite 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.

Message Descrizione Attenuazione
"no.scale.up.mig.skipped" Impossibile fare lo scale up di un gruppo di istanze gestite perché è stato ignorato durante la simulazione.

Parametri: motivi leggibili per cui l'annuncio è stato ignorato (ad esempio manca un requisito dei pod).

Esamina i parametri inclusi nel messaggio di errore e specifica il motivo per cui il gruppo di istanze gestite è stato ignorato.
"no.scale.up.mig.failing.predicate" Impossibile fare lo scale up di un gruppo di istanze gestite perché non soddisfa i requisiti dei predicati per i pod in attesa.

Parametri: nome del predicato con errori, cause leggibili per l'errore.

Esamina i requisiti del pod, ad esempio regole di affinità, incompatibilità o tolleranze e requisiti delle risorse.

Motivi del 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 pool di nodi per ospitare un determinato gruppo di pod.

Message Descrizione 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 per le risorse GPU non sono definiti a livello di cluster.

Parametri: 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.

Parametri: 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 oppure non esiste un tipo di macchina adatto alla richiesta.

Parametri: nome della zona considerata.

Esamina e aggiorna i limiti massimi delle risorse a livello di cluster, le richieste di risorse 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.

Parametri: nome della zona considerata, motivi leggibili per cui i predicati hanno avuto esito negativo.

Esamina i requisiti del pod in attesa, ad esempio regole di affinità, incompatibilità, tolleranze o requisiti delle risorse.

Motivi di un evento NoScaleDown

Motivi di primo livello NoScaleDown

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

Message Descrizione Attenuazione
"no.scale.down.in.backoff" Si è verificato un evento noScaleDown perché lo scale down è in un periodo di backoff (bloccato temporaneamente). Questo evento dovrebbe essere temporaneo e potrebbe verificarsi quando si è verificato un evento di scale up recente. Segui i passaggi di mitigazione associati ai motivi di livello inferiore per lo fare lo scale down. Una volta risolti i motivi di base, il gestore della scalabilità automatica dei cluster uscirà dal backoff. Se il messaggio persiste dopo aver risolto i motivi alla base, rivolgiti all'assistenza di Google Cloud per ulteriori indagini.
"no.scale.down.in.progress" Si è verificato un evento noScaleDown perché lo scale down è bloccato fino all'eliminazione del nodo precedente pianificato per la rimozione. Questo evento dovrebbe essere temporaneo perché il pod verrà rimosso forzatamente. Se questo messaggio compare di frequente, puoi rivedere il valore gracefulTerminationPeriod per lo fare lo scale down di blocco dei pod. Per velocizzare la risoluzione, puoi anche eliminare forzatamente il pod se non è più necessario.

Motivi a livello di nodo NoScaleDown

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

Message Descrizione Attenuazione
"no.scale.down.node.scale.down.disabled.annotation" Impossibile rimuovere il nodo perché ha un'annotazione scale-down-disabled. Esamina l'annotazione che impedisce fare lo scale down seguendo le istruzioni riportate nelle domande frequenti sul gestore della scalabilità automatica dei cluster Kubernetes.
"no.scale.down.node.node.group.min.size.reached" Impossibile rimuovere il nodo perché il relativo gruppo di nodi ha già raggiunto la dimensione minima. Esamina e adjust il valore minimo impostato per la scalabilità automatica del pool di nodi.
"no.scale.down.node.minimal.resource.limits.exceeded" Lo scale down di un nodo sottoutilizzato è bloccato perché violerebbe i limiti minimi di risorse a livello di cluster impostati per il provisioning automatico dei nodi. Esamina i limiti minimi delle risorse a livello di cluster.
"no.scale.down.node.no.place.to.move.pods" Lo scale down di un nodo sottoutilizzato è bloccato perché è in esecuzione un pod che non può essere spostato in un altro nodo del cluster. 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. Questo messaggio è previsto se non ti aspetti che il pod venga ripianificato, poiché non sono presenti altri nodi su cui potrebbe essere pianificato.
"no.scale.down.node.pod.not.backed.by.controller" Il pod sta bloccando fare lo scale down di un nodo sottoutilizzato perché non ha un controller noto al gestore della scalabilità automatica dei cluster Kubernetes (ReplicationController, DaemonSet, Job, StatefulSet o ReplicaSet). Scopri di più sulle domande frequenti sul gestore della scalabilità automatica dei cluster Kubernetes sui tipi di pod che possono impedire al gestore della scalabilità automatica dei cluster di rimuovere un nodo.

Parametri: nome del pod di blocco.

Imposta un'annotazione "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" per il pod o definisci un controller (ReplicationController, DaemonSet, Job, StatefulSet o ReplicaSet).
"no.scale.down.node.pod.has.local.storage" Il pod sta bloccando fare lo scale down perché richiede spazio di archiviazione locale. Scopri di più sulle domande frequenti sul gestore della scalabilità automatica dei cluster Kubernetes sui tipi di pod che possono impedire al gestore della scalabilità automatica dei cluster di rimuovere un nodo.

Parametri: nome del pod di blocco.

Imposta un'annotazione "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" per il pod se i dati nello spazio di archiviazione locale del pod non sono critici.
"no.scale.down.node.pod.not.safe.to.evict.annotation" Il pod sta bloccando fare lo scale down perché ha un'annotazione "non sicuro da rimuovere". Per ulteriori dettagli, consulta le domande frequenti sul gestore della scalabilità automatica dei cluster Kubernetes.

Parametri: nome del pod di blocco.

Se è possibile rimuovere il pod in modo sicuro, aggiorna l'annotazione in "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 non DaemonSet, senza mirroring, senza PodDisruptionBudget nello spazio dei nomi kube-system.

Parametri: nome del pod di blocco.

Segui le istruzioni nelle Domande frequenti sul gestore della scalabilità automatica dei cluster Kubernetes per impostare un PodDisruptionBudget per consentire al gestore della scalabilità automatica dei cluster di spostare i pod nello spazio dei nomi kube-system.
"no.scale.down.node.pod.not.enough.pdb" Il pod sta bloccando fare lo scale down perché non è rimasto abbastanza PodDisruptionBudget. Per ulteriori dettagli, consulta le domande frequenti sul gestore della scalabilità automatica dei cluster Kubernetes.

Parametri: nome del pod di blocco.

Consulta l'PodDisruptionBudget per il pod e consulta le best practice per PodDisruptionBudget. Potresti riuscire a risolvere il messaggio scalando l'applicazione o modificando PodDisruptionBudget per consentire un numero maggiore di pod non disponibili.
"no.scale.down.node.pod.controller.not.found" Il pod sta bloccando fare lo scale down perché non è possibile trovare il controller (ad esempio Deployment o ReplicaSet). Esamina i log per determinare quali azioni sono state intraprese che hanno lasciato in esecuzione un pod dopo la rimozione del controller. Per risolvere il problema, puoi eliminare manualmente il pod.
"no.scale.down.node.pod.unexpected.error" Lo scale down di un nodo sottoutilizzato è bloccato perché include un pod in uno stato di errore imprevisto. Rivolgiti all'assistenza Google Cloud per ulteriori indagini.

Passaggi successivi