Como visualizar eventos do escalonador automático de clusters


O escalonador automático de cluster do Google Kubernetes Engine (GKE) emite eventos de visibilidade, que estão disponíveis como entradas de registro no Cloud Logging. Nesta página, mostramos como visualizar esses eventos registrados para saber quando e porque o escalonador automático de cluster do GKE toma decisões de escalonamento automático.

Requisitos de disponibilidade

A capacidade de visualizar eventos registrados para o escalonador automático de cluster está disponível nas seguintes versões de cluster:

Tipo de evento Versão do cluster
status, scaleUp, scaleDown, eventResult 1.15.4-gke.7 e posterior
nodePoolCreated, nodePoolDeleted. 1.15.4-gke.18 e posterior
noScaleUp 1.16.6-gke.3 e posterior
noScaleDown 1.16.8-gke.2 e posterior

Para ver os eventos do autoescalador, ative as Operações do Cloud para o GKE no seu cluster. Os eventos não serão produzidos se as operações na nuvem do GKE estiverem desativadas.

Como visualizar eventos

Os eventos de visibilidade do escalonador automático de cluster são armazenados em um registro do Cloud Logging, no mesmo projeto em que o cluster do GKE está localizado.

Para ver os registros, faça o seguinte

  1. No Console do Cloud, acesse a página visualizador de registros.

    Acessar o visualizador de registros

  2. Pesquise os registros usando a interface de consulta básica ou avançada.

    Para pesquisar registros usando a interface de consulta básica, faça o seguinte:

    1. Na lista suspensa de recursos, selecione Cluster do Kubernetes e selecione o local e o nome do cluster.
    2. Na lista suspensa de tipo de registro, selecione container.googleapis.com/cluster-autoscaler-visibility.
    3. Na lista suspensa de período, selecione o período desejado.

    Para pesquisar registros usando a interface de consulta avançada, aplique o seguinte filtro avançado:

    resource.type="k8s_cluster"
    resource.labels.location="cluster-location"
    resource.labels.cluster_name="cluster-name"
    logName="projects/project-id/logs/container.googleapis.com%2Fcluster-autoscaler-visibility"
    

    em que:

    • cluster-location é o local do cluster que está sendo inspecionado.
    • cluster-name é o nome do cluster;
    • project-id é o código do projeto.

Tipos de eventos

Todos os eventos registrados estão no formato JSON e podem ser encontrados no campo jsonPayload de uma entrada de registro. Todos os carimbos de data/hora nos eventos são carimbos de data/hora UNIX.

Veja um resumo dos tipos de eventos emitidos pelo escalonador automático de cluster:

Tipo de evento Descrição
status Ocorre periodicamente e descreve o tamanho de todos os pools de nós com escalonamento automático e o tamanho de destino de todos os pools de nós com escalonamento automático, conforme observado pelo escalonamento automático de cluster.
scaleUp Ocorre quando o escalonador automático de cluster aumenta o cluster.
scaleDown Ocorre quando o escalonador automático de cluster diminui o cluster.
eventResult Ocorre quando um evento scaleUp ou scaleDown é concluído com ou sem êxito.
nodePoolCreated Ocorre quando o escalonador automático de cluster com o provisionamento automático de nós ativado cria um novo pool de nós.
nodePoolDeleted Ocorre quando o escalonador automático de cluster com o provisionamento automático de nós ativado exclui um pool de nós.
noScaleUp Ocorre quando há pods não programados no cluster e o escalonador automático de cluster não pode escalonar o cluster para acomodar os pods.
noScaleDown Ocorre quando há nós impedidos de serem excluídos pelo escalonador automático de cluster.

Evento de status

Um evento status é emitido periodicamente e descreve o tamanho atual de todos os pools de nós com escalonamento automático e o tamanho de destino de todos os pools de nós com escalonamento automático, conforme observado pelo escalonamento automático de cluster.

Exemplo

A amostra de registro a seguir mostra um evento status:

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

Evento ScaleUp

Um evento scaleUp é emitido quando o escalonador automático de cluster aumenta o cluster. O autoescalador aumenta o tamanho dos pools de nós do cluster aumentando os Grupos de instâncias gerenciadas (MIGs, na sigla em inglês) subjacentes dos pools de nós.

O evento contém informações sobre quais MIGs foram escalonados, por quantos nós e quais pods não programáveis acionaram o evento.

A lista de pods de acionamento é truncada para 50 entradas arbitrárias. O número real de pods de acionamento pode ser encontrado no campo triggeringPodsTotalCount.

Exemplo

A amostra de registro a seguir mostra um 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

Um evento scaleDown é emitido quando o escalonador automático de cluster diminui o cluster. Esse evento contém informações sobre quais nós estão sendo removidos e quais pods precisam ser removidos por causa disso.

Os campos cpuRatio e memRatio descrevem a utilização da CPU e da memória do nó (percentual). Essa utilização é uma soma das solicitações de pods divididas pela alocação de nós, não pela utilização real.

A lista de pods removidos é truncada para 50 entradas arbitrárias. O número real de pods removidos pode ser encontrado no campo evictedPodsTotalCount.

Exemplo

A amostra de registro a seguir mostra um 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"
          }
        }
      ]
    }
  }
}

Evento EventResult

Um evento eventResult é emitido quando um evento scaleUp ou scaleDown é concluído com ou sem êxito. Esse evento contém uma lista de IDs de evento (do campo eventId em eventos scaleUp ou scaleDown) e mensagens de erro. Uma mensagem de erro vazia indica que o evento foi concluído. Uma lista de eventos eventResult é agregada no campo results.

Para diagnosticar erros, consulte as seções Erros de ScaleUp e ScaleDown.

Exemplo

A amostra de registro a seguir mostra um 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

Um evento nodePoolCreated é emitido quando o escalonador automático de cluster com o provisionamento automático de nós ativado cria um novo pool de nós. Esse evento contém o nome do pool de nós criado e uma lista dos respectivos MIGs. Se o pool de nós foi criado devido a um evento de scaleUp, o eventId do evento de scaleUp correspondente é incluído no campo triggeringScaleUpId.

Exemplo

A amostra de registro a seguir mostra um 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

Um evento nodePoolDeleted é emitido quando o escalonador automático de cluster com o provisionamento automático de nós ativado exclui um pool de nós.

Exemplo

A amostra de registro a seguir mostra um evento nodePoolDeleted:

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

Evento NoScaleUp

Um evento noScaleUp é emitido periodicamente quando há pods não programados no cluster e o escalonador automático de cluster não pode escalonar o cluster para acomodar os pods.

  • Os eventos noScaleUp representam o melhor esforço, ou seja, esses eventos não apresentam todos os motivos possíveis que impedem o escalonamento automático vertical do cluster.
  • Os eventos noScaleUp são limitados para reduzir o volume de registros produzidos. Cada motivo persistente é emitido apenas a cada dois minutos.
  • Todos os motivos podem ser divididos arbitrariamente entre vários eventos. Por exemplo, não há garantia de que todos os motivos de MIG rejeitados para um único grupo de pods serão exibidos no mesmo evento.
  • A lista de grupos de pods não processados é truncada para 50 entradas arbitrárias. O número real de grupos de pods não processados pode ser encontrado no campo unhandledPodGroupsTotalCount.

Campos do motivo

Os campos a seguir ajudam a explicar por que a expansão não ocorreu:

  • reason: fornece um motivo global que impediu a expansão do escalonador automático de cluster. Consulte a seção Motivos de nível superior do NoScaleUp para mais detalhes.
  • napFailureReason: fornece um motivo global para impedir que o escalonador automático de cluster provisione pools de nós adicionais (por exemplo, o provisionamento automático de nós está desativado). Consulte a seção Motivos de provisionamento automático de nós de nível superior do NoScaleUp para mais detalhes.
  • skippedMigs[].reason: fornece informações sobre o motivo pelo qual um MIG específico foi ignorado. O escalonador automático de cluster ignora alguns MIGs de qualquer pod durante uma tentativa de escalonamento vertical (por exemplo, porque adicionar outro nó excederia os limites de recursos em todo o cluster). Consulte a seção Motivos no nível do MIG do NoScaleUp para mais detalhes.
  • unhandledPodGroups: contém informações sobre o motivo pelo qual um determinado grupo de pods não programáveis não aciona o escalonamento vertical. Os pods são agrupados pelo controlador imediato. Os pods sem um controlador estão no mesmo grupo. Cada grupo de pods contém um pod de exemplo arbitrário e o número de pods no grupo, além dos seguintes motivos:
    • napFailureReasons: motivos pelos quais o escalonador automático de cluster não pode provisionar um novo pool de nós para acomodar esse grupo de pods (por exemplo, os pods têm restrições de afinidade). Consulte a seção Motivos de provisionamento automático de nós no nível do pod do NoScaleUp para mais detalhes.
    • rejectedMigs[].reason: motivos por MIG da razão pela qual o escalonador automático de cluster não pode aumentar o tamanho de um MIG específico para acomodar esse grupo de pods (por exemplo, o nó do MIG é muito pequeno para os pods). Consulte a seção Motivos no nível do MIG do NoScaleUp para mais detalhes.

Exemplo

A amostra de registro a seguir mostra um 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

Um evento noScaleDown é emitido periodicamente quando há nós impedidos de serem excluídos pelo escalonador automático de cluster.

  • Os nós que não podem ser removidos porque a utilização deles é alta não são incluídos nos eventos noScaleDown.
  • Os eventos NoScaleDown representam o melhor esforço, ou seja, esses eventos não apresentam todos os motivos possíveis que impedem a redução do escalonamento automático do cluster.
  • Os eventos NoScaleDown são limitados para reduzir o volume de registros produzidos. Cada motivo persistente será emitido apenas a cada dois minutos.
  • A lista de nós é truncada para 50 entradas arbitrárias. O número real de nós pode ser encontrado no campo nodesTotalCount.

Campos do motivo

Os campos a seguir ajudam a explicar por que a redução não ocorreu:

  • reason: fornece um motivo global que impediu a redução do escalonador automático de cluster. (por exemplo, um período de espera após um escalonamento vertical recente). Consulte a seção Motivos de nível superior do NoScaleDown para mais detalhes.
  • nodes[].reason: fornece motivos por nó para impedir que o escalonador automático de cluster exclua um nó específico (por exemplo, não há um lugar para mover os pods). Consulte a seção Motivos no nível do nó do NoScaleDown para mais detalhes.

Exemplo

A amostra de registro a seguir mostra um 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"
      }
    }
  }
}

Cenários do Debugging

Esta seção fornece orientações sobre como depurar eventos de escalonamento.

O cluster não está escalonando verticalmente

Cenário: criei um pod no meu cluster, mas ele encontra-se travado no estado Pendente durante a última hora. O escalonador automático de cluster não provisionou novos nós para acomodar o pod.

Solução:

  1. No visualizador de registros, encontre os detalhes de registro dos eventos do escalonador automático de cluster, conforme descrito na seção Como visualizar eventos.
  2. Pesquise eventos scaleUp que contenham o pod desejado no campo triggeringPods. É possível filtrar as entradas de registro, incluindo a filtragem por um valor de campo JSON específico. Saiba mais em Consultas de registros avançados.

    1. Encontre um EventResult que contenha o mesmo eventId que o evento scaleUp.
    2. Observe o campo errorMsg e consulte a lista de possíveis mensagens de erro scaleUp.

    Exemplo de erro de ScaleUp: para um evento scaleUp, você descobre que o erro é "scale.up.error.quota.exceeded", o que indica que "Um evento scaleUp falhou porque alguns dos MIGs não puderam ser aumentados devido à cota em excesso". Para resolver o problema, revise as configurações de cota e aumente as configurações que estão perto de serem excedidas. O escalonador automático de cluster adiciona um novo nó e o pod é programado.

  3. Caso contrário, pesquise eventos noScaleUp e analise os seguintes campos:

    • unhandledPodGroups: contém informações sobre o pod (ou o controlador do pod).
    • reason: fornece motivos globais que indicam que o escalonamento vertical pode ser bloqueado.
    • skippedMigs: fornece motivos pelos quais alguns MIGs podem ser ignorados.
  4. Consulte as seguintes seções que contêm possíveis motivos para eventos noScaleUp:

    Exemplo de NoScaleUp: você encontrou um evento noScaleUp para o pod e todos os MIGs no campo rejectedMigs têm o ID da mensagem do mesmo motivo de "no.scale.up.mig.failing.predicate" com dois parâmetros: "NodeAffinity" e "node(s) did not match node selector". Depois de consultar a lista de mensagens de erro, você descobre que "não pode escalonar verticalmente um MIG porque um predicado falhou para ele"; os parâmetros são o nome do predicado com falha e o motivo da falha. Para resolver o problema, revise a especificação do pod e descubra que ele tem um seletor de nós que não corresponde a nenhum MIG no cluster. Exclua o seletor da especificação do pod e recrie o pod. O escalonador automático de cluster adiciona um novo nó e o pod é programado.

  5. Se não houver eventos noScaleUp, use outros métodos de depuração para resolver o problema.

O cluster não está reduzindo verticalmente

Cenário: tenho um nó no cluster que utilizou apenas 10% da CPU e da memória dele nos últimos dias. Apesar da baixa utilização, o escalonador automático de cluster não excluiu o nó conforme esperado.

Solução:

  1. No visualizador de registros, encontre os detalhes de registro dos eventos do escalonador automático de cluster, conforme descrito na seção Como visualizar eventos.
  2. Pesquise eventos scaleDown que contenham o pod desejado no campo nodesToBeRemoved. É possível filtrar as entradas de registro, incluindo a filtragem por um valor de campo JSON específico. Saiba mais em Consultas de registros avançados.
    1. No evento scaleDown, procure um evento EventResult que contenha o eventId associado.
    2. Observe o campo errorMsg e consulte a lista de possíveis mensagens de erro scaleDown.
  3. Caso contrário, pesquise eventos noScaleDown que tenham o nó desejado no campo nodes. Analise o campo reason para ver os motivos globais que indicam que a redução do escalonamento pode ser bloqueado.
  4. Consulte as seguintes seções que contêm possíveis motivos para eventos noScaleDown:

    Exemplo de NoScaleDown: você encontrou um evento noScaleDown que contém um motivo por nó para seu nó. O ID da mensagem é "no.scale.down.node.pod.has.local.storage" e há um único parâmetro: "test-single-pod". Depois de consultar a lista de mensagens de erro, você descobre que o "pod está bloqueando a redução porque solicita armazenamento local. Consulte as Perguntas frequentes do escalonador automático de cluster do Kubernetes e descubra que a solução é adicionar uma anotação "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" ao pod. Depois de aplicar a anotação, o escalonador automático de cluster diminui o cluster corretamente.

  5. Se não houver eventos noScaleDown, use outros métodos de depuração para resolver o problema.

Mensagens

Os eventos emitidos pelo escalonador automático de cluster usam mensagens parametrizadas (vistas no campo messageId) para fornecer explicações sobre o evento.

Esta seção fornece descrições para vários messageId e os parâmetros correspondentes. No entanto, esta seção não contém todas as mensagens possíveis e pode ser estendida a qualquer momento.

Erros de ScaleUp

As mensagens de erro para eventos scaleUp são encontradas no evento eventResult correspondente, no campo resultInfo.results[].errorMsg.

Mensagem Descrição

"scale.up.error.out.of.resources"
O evento scaleUp falhou porque alguns dos MIGs não puderam ser aumentados devido à falta de recursos.

Parâmetros: IDs MIG com falha.


"scale.up.error.quota.exceeded"
O evento scaleUp falhou porque alguns dos MIGs não puderam ser aumentados devido à cota do Compute Engine excedida.

Parâmetros: IDs MIG com falha.


"scale.up.error.waiting.for.instances.timeout"
O evento scaleUp falhou porque as instâncias em alguns dos MIGs não apareciam a tempo.

Parâmetros: IDs MIG com falha.


"scale.up.error.ip.space.exhausted"
O evento scaleUp falhou porque o cluster não tem espaço suficiente de endereços IP não alocados para usar para adicionar novos nós ou pods.

Parâmetros: IDs MIG com falha.


"scale.up.error.service.account.deleted"
O evento scaleUp falhou porque a conta de serviço usada pelo escalonador automático de cluster foi excluída.

Parâmetros: IDs MIG com falha.

Erros de ScaleDown

As mensagens de erro para eventos scaleDown são encontradas no evento eventResult correspondente, no campo resultInfo.results[].errorMsg.

Mensagem Descrição

"scale.down.error.failed.to.mark.to.be.deleted"
O evento scaleDown falhou porque não foi possível marcar um nó para exclusão.

Parâmetros: nome do nó com falha.


"scale.down.error.failed.to.evict.pods"
Ocorreu uma falha no evento scaleDown porque alguns dos pods não puderam ser removidos de um nó.

Parâmetros: nome do nó com falha.


"scale.down.error.failed.to.delete.node.min.size.reached"
O evento scaleDown falhou porque não foi possível excluir um nó devido ao tamanho mínimo do cluster.

Parâmetros: nome do nó com falha.

Motivos para um event NoScaleUp

Motivos de nível superior NoScaleUp

Mensagens de motivo de nível superior para eventos noScaleUp aparecem no campo noDecisionStatus.noScaleUp.reason. A mensagem contém um motivo de nível superior com o motivo pelo qual o escalonador automático de cluster não pode escalonar o cluster.

Mensagem Descrição

"no.scale.up.in.backoff"
Ocorreu um noScaleUp porque o escalonamento vertical está em um período de espera (temporariamente bloqueado).

Motivos de provisionamento automático de nós de nível superior NoScaleUp

Mensagens com o motivo de provisionamento automático de nós de nível superior para eventos noScaleUp aparecem no campo noDecisionStatus.noScaleUp.napFailureReason. A mensagem contém um motivo de nível superior com o motivo pelo qual o escalonador automático de cluster não pode provisionar novos pools de nós.

Mensagem Descrição

"no.scale.up.nap.disabled"
O provisionamento automático de nós não aprovisionou nenhum grupo de nós porque o provisionamento automático de nós foi desativado. Consulte Como ativar o provisionamento automático de nós para mais detalhes.

"no.scale.up.nap.no.locations.available"
O provisionamento automático de nós não aprovisionou nenhum grupo de nós porque nenhum local de provisionamento automático de nós estava disponível.

Motivos no nível MIG NoScaleUp

Mensagens de motivo no nível MIG para eventos noScaleUp aparecem nos campos noDecisionStatus.noScaleUp.skippedMigs[].reason e noDecisionStatus.noScaleUp.unhandledPodGroups[].rejectedMigs[].reason. A mensagem contém um motivo pelo qual o escalonador automático de cluster não pode aumentar o tamanho de um MIG específico.

Mensagem Descrição

"no.scale.up.mig.skipped"
Não é possível escalonar um MIG porque ele foi ignorado durante a simulação.

Parâmetros: motivos legíveis da razão pela qual ele foi ignorado.


"no.scale.up.mig.failing.predicate"
Não é possível escalonar verticalmente um MIG porque um predicado falhou para ele.

Parâmetros: nome do predicado com falha, motivos legíveis da razão pela qual ele falhou.

Motivos de provisionamento automático de nós no nível do grupo de pods NoScaleUp

As mensagens com o motivo do provisionamento automático de nós no nível do grupo de pods para eventos noScaleUp aparecem no campo noDecisionStatus.noScaleUp.unhandledPodGroups[].napFailureReasons[]. A mensagem contém um motivo pelo qual o escalonador automático de cluster não pode provisionar um novo pool de nós para acomodar um determinado grupo de pods.

Mensagem Descrição

"no.scale.up.nap.pod.gpu.no.limit.defined"
O provisionamento automático de nós não provisionou nenhum grupo de nós para o pod porque ele tem uma solicitação de GPU, e a GPU não tem um limite definido.

Parâmetros: tipo de GPU solicitado.


"no.scale.up.nap.pod.gpu.type.not.supported"
O provisionamento automático de nós não provisionou nenhum grupo de nós para o pod porque ele especifica uma GPU não compatível. Consulte Como configurar limites de GPU para mais detalhes.

Parâmetros: tipo de GPU solicitado.


"no.scale.up.nap.pod.gpu.other.error"
O provisionamento automático de nós não provisionou nenhum grupo de nós para o pod devido a outros problemas com a configuração da GPU. Consulte Como configurar limites de GPU para mais detalhes.

"no.scale.up.nap.pod.zonal.resources.exceeded"
O provisionamento automático de nós não provisionou nenhum grupo de nós para o pod nessa zona porque isso violaria os limites de recursos.

Parâmetros: nome da zona considerada.


"no.scale.up.nap.pod.zonal.failing.predicates"
O provisionamento automático de nós não provisionou nenhum grupo de nós para o pod nessa zona por causa de predicados com falha.

Parâmetros: nome da zona considerada, motivos legíveis da razão pela qual os predicados falharam.

Motivos para um evento do NoScaleDown

Motivos de nível superior do NoScaleDown

Mensagens de motivo de nível superior para eventos noScaleDown aparecem no campo noDecisionStatus.noScaleDown.reason. A mensagem contém um motivo de nível superior pelo qual o escalonador automático de cluster não pode reduzir o cluster.

Mensagem Descrição

"no.scale.down.in.backoff"
Ocorreu um evento noScaleDown porque a redução está em um período de espera (temporariamente bloqueado).

"no.scale.down.in.progress"
Ocorreu um evento noScaleDown porque um evento scaleDown anterior ainda está em andamento.

Motivos no nível do nó do NoScaleDown

Mensagens de motivo no nível do nó para eventos noScaleDown aparecem no campo noDecisionStatus.noScaleDown.nodes[].reason. A mensagem contém um motivo pelo qual o escalonador automático de cluster não pode remover um nó específico.

Mensagem Descrição

"no.scale.down.node.scale.down.disabled.annotation"
O nó não pode ser removido porque tem uma anotação "redução de escalonamento desativado". Consulte as Perguntas frequentes do escalonador automático de cluster do Kubernetes para mais detalhes.

"no.scale.down.node.node.group.min.size.reached"
O nó não pode ser removido porque o grupo de nós já está no tamanho mínimo.

"no.scale.down.node.minimal.resource.limits.exceeded"
O nó não pode ser removido porque violaria os limites mínimos de recursos em todo o cluster.

"no.scale.down.node.no.place.to.move.pods"
O nó não pode ser removido porque não há um lugar para mover os pods.

"no.scale.down.node.pod.not.backed.by.controller"
O pod está bloqueando a redução de escalonamento porque não é apoiado por um controlador. Consulte as Perguntas frequentes do escalonador automático de cluster do Kubernetes para mais detalhes.

Parâmetros: nome do pod de bloqueio.


"no.scale.down.node.pod.has.local.storage"
O pod está bloqueando a redução do escalonamento porque solicita armazenamento local. Consulte as Perguntas frequentes do escalonador automático de cluster do Kubernetes para mais detalhes.

Parâmetros: nome do pod de bloqueio.


"no.scale.down.node.pod.not.safe.to.evict.annotation"
O pod está bloqueando a redução do escalonamento porque tem uma anotação "não seguro para remoção". Consulte as Perguntas frequentes do escalonador automático de cluster do Kubernetes para mais detalhes.

Parâmetros: nome do pod de bloqueio.


"no.scale.down.node.pod.kube.system.unmovable"
O pod está bloqueando a redução do escalonamento porque é um pod kube-system não daemonset, não espelhado e não atribuído ao pdb. Consulte as Perguntas frequentes do escalonador automático de cluster do Kubernetes para mais detalhes.

Parâmetros: nome do pod de bloqueio.


"no.scale.down.node.pod.not.enough.pdb"
O pod está bloqueando a redução do escalonamento porque não há PodDisruptionBudget suficiente. Consulte as Perguntas frequentes do escalonador automático de cluster do Kubernetes para mais detalhes.

Parâmetros: nome do pod de bloqueio.

A seguir