Veja eventos do redimensionador automático de clusters

Esta página fornece informações sobre eventos de visibilidade emitidos pelo dimensionamento automático de clusters no Google Kubernetes Engine (GKE). Ao analisar estes eventos, pode obter estatísticas sobre a forma como o redimensionador automático de clusters gere o dimensionamento do seu cluster e compreender os motivos das suas decisões.

O escalador automático do cluster do GKE emite eventos de visibilidade, que estão disponíveis como entradas de registo no Cloud Logging. Os eventos descritos neste guia são separados dos eventos do Kubernetes produzidos pelo escalador automático do cluster.

Requisitos

Para ver os eventos do redimensionador automático, tem de ativar o Cloud Logging no cluster. Os eventos não são produzidos se o registo estiver desativado.

Antes de começar

Antes de começar, certifique-se de que realizou as seguintes tarefas:

  • Ative a API Google Kubernetes Engine.
  • Ative a API Google Kubernetes Engine
  • Se quiser usar a CLI gcloud para esta tarefa, instale-a e, em seguida, inicialize-a. Se instalou anteriormente a CLI gcloud, execute gcloud components update para obter a versão mais recente.

Visualizar eventos

Os eventos de visibilidade do escalador automático de clusters são armazenados num registo do Cloud Logging, no mesmo projeto onde se encontra o cluster do GKE. Também pode ver estes eventos a partir das notificações na página do Google Kubernetes Engine na Google Cloud consola.

Visualizar registos de eventos de visibilidade

Para ver os registos, faça o seguinte:

  1. Na Google Cloud consola, aceda à página Clusters do Kubernetes.

    Aceda a Clusters do Kubernetes

  2. Selecione o nome do cluster para ver a respetiva página Detalhes do cluster.

  3. Na página Detalhes do cluster, clique no separador Registos.

  4. No separador Registos, clique no separador Registos do dimensionamento automático para ver os registos.

  5. (Opcional) Para aplicar filtros mais avançados para restringir os resultados, clique no botão com a seta no lado direito da página para ver os registos no Logs Explorer.

Ver notificações de eventos de visibilidade

Para ver as notificações de eventos de visibilidade na página do Google Kubernetes Engine, faça o seguinte:

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola:

    Aceda ao Google Kubernetes Engine

  2. Consulte a coluna Notificações para ver clusters específicos e encontrar notificações relacionadas com o dimensionamento.

  3. Clique na notificação para ver informações detalhadas, ações recomendadas e para aceder aos registos deste evento.

Tipos de eventos

Todos os eventos registados estão no formato JSON e podem ser encontrados no campo jsonPayload de uma entrada de registo. Todas as indicações de tempo nos eventos são indicações de tempo de segundos UNIX.

Segue-se um resumo dos tipos de eventos emitidos pelo redimensionador automático de cluster:

Tipo de evento Descrição
status Ocorre periodicamente e descreve a dimensão de todos os conjuntos de nós com escala automática e a dimensão de destino de todos os conjuntos de nós com escala automática, conforme observado pelo redimensionador automático de cluster.
scaleUp Ocorre quando o redimensionador automático de clusters aumenta a escala do cluster.
scaleDown Ocorre quando o redimensionador automático de clusters reduz a escala do cluster.
eventResult Ocorre quando um evento scaleUp ou scaleDown é concluído com êxito ou sem êxito.
nodePoolCreated Ocorre quando o escalador automático de clusters com o aprovisionamento automático de nós ativado cria um novo conjunto de nós.
nodePoolDeleted Ocorre quando o dimensionamento automático do cluster com a administração de contas automática de nós ativada elimina um conjunto de nós.
noScaleUp Ocorre quando existem pods não agendáveis no cluster e o redimensionador automático de clusters não consegue aumentar a escala do cluster para acomodar os pods.
noScaleDown Ocorre quando existem nós que estão bloqueados e não podem ser eliminados pelo dimensionamento automático do cluster.

Evento de estado

Um evento status é emitido periodicamente e descreve o tamanho real de todos os conjuntos de nós com dimensionamento automático e o tamanho de destino de todos os conjuntos de nós com dimensionamento automático, conforme observado pelo dimensionador automático do cluster.

Exemplo

O exemplo de registo seguinte mostra um evento status:

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

Evento ScaleUp

É emitido um evento scaleUp quando o redimensionador automático de clusters aumenta a escala do cluster. O escalador automático aumenta o tamanho dos node pools do cluster ao aumentar a escala dos grupos de instâncias geridas (MIGs) subjacentes para os node pools. Para saber mais sobre como funciona o aumento da escala, consulte o artigo Como funciona o aumento da escala? nas Perguntas frequentes do redimensionador automático de clusters de Kubernetes.

O evento contém informações sobre os MIGs que foram dimensionados, o número de nós e os pods não agendáveis que acionaram o evento.

A lista de pods de acionamento é truncada para 50 entradas arbitrárias. Pode encontrar o número real de pods de acionamento no campo triggeringPodsTotalCount.

Exemplo

O exemplo de registo seguinte 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 redimensionador automático de clusters reduz a escala do cluster. Para saber mais sobre como funciona a redução de escala, consulte o artigo Como funciona a redução de escala? nas Perguntas frequentes do redimensionador automático de clusters de Kubernetes.

Os campos cpuRatio e memRatio descrevem a utilização de memória e CPU do nó, em percentagem. Esta utilização é uma soma dos pedidos de agrupamentos dividida pelo número de nós atribuíveis, e não a utilização real.

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

Use a seguinte consulta para verificar se o redimensionador automático de clusters reduziu o número de nós:

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" )

Substitua o seguinte:

  • CLUSTER_NAME: o nome do cluster.

  • COMPUTE_REGION: a região do Compute Engine do cluster, como us-central1.

Exemplo

O exemplo de registo seguinte 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"
          }
        }
      ]
    }
  }
}

Também pode ver o evento scale-down nos nós sem carga de trabalho em execução (normalmente, apenas pods do sistema criados por DaemonSets).

Use a seguinte consulta para ver os registos de eventos:

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")

Substitua o seguinte:

  • PROJECT_ID: o ID do seu projeto.

  • CLUSTER_NAME: o nome do cluster.

  • COMPUTE_REGION: a região do Compute Engine do cluster, como us-central1.

Evento EventResult

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

Para diagnosticar erros, consulte as secções Erros de aumento e Erros de redução.

Exemplo

O exemplo de registo seguinte 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 escalador automático de clusters com o aprovisionamento automático de nós ativado cria um novo conjunto de nós. Este evento contém o nome do grupo de nós criado e uma lista dos respetivos MIGs subjacentes. Se o conjunto de nós foi criado devido a um evento scaleUp, o eventId do evento scaleUp correspondente é incluído no campo triggeringScaleUpId.

Exemplo

O exemplo de registo seguinte 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

É emitido um evento nodePoolDeleted quando o escalador automático de clusters com o aprovisionamento automático de nós ativado elimina um conjunto de nós.

Exemplo

O exemplo de registo seguinte 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 existem pods não agendáveis no cluster e o redimensionador automático de cluster não consegue aumentar a escala do cluster para acomodar os pods.

  • Os eventos noScaleUp são de melhor esforço, ou seja, estes eventos não abrangem todos os motivos possíveis pelos quais o redimensionador automático de clusters não consegue aumentar os recursos.
  • Os eventos noScaleUp são limitados para restringir o volume de registos produzido. Cada motivo persistente só é emitido a cada dois minutos.
  • Todos os motivos podem ser divididos arbitrariamente em vários eventos. Por exemplo, não existe garantia de que todos os motivos de rejeição de MIG para um único grupo de agrupamentos apareçam 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 de motivo

Os seguintes campos ajudam a explicar por que motivo não ocorreu o aumento da escala:

  • reason: fornece um motivo global pelo qual o redimensionador automático de clusters está impedido de aumentar a escala. Consulte a secção Motivos de nível superior NoScaleUp para ver detalhes.
  • napFailureReason: fornece um motivo global que impede o escalador automático de clusters de aprovisionar pools de nós adicionais (por exemplo, o aprovisionamento automático de nós está desativado). Consulte a secção Motivos do aprovisionamento automático do nó de nível superior NoScaleUp para ver detalhes.
  • skippedMigs[].reason: fornece informações sobre o motivo pelo qual um determinado MIG foi ignorado. O redimensionador automático de cluster ignora alguns MIGs na consideração de qualquer pod durante uma tentativa de aumento da escala (por exemplo, porque a adição de outro nó excederia os limites de recursos ao nível do cluster). Consulte a secção Motivos ao nível do MIG para noScaleUp para ver detalhes.
  • unhandledPodGroups: contém informações sobre o motivo pelo qual um grupo específico de pods não agendáveis não aciona o aumento da capacidade. Os agrupamentos são agrupados pelo respetivo controlador imediato. Os pods sem um controlador estão em grupos separados. Cada grupo de agrupamentos contém um exemplo arbitrário de agrupamento e o número de agrupamentos no grupo, bem como os seguintes motivos:
    • napFailureReasons: motivos pelos quais o redimensionador automático de cluster não consegue aprovisionar um novo node pool para acomodar este grupo de pods (por exemplo, os pods têm restrições de afinidade). Consulte a secção Motivos da aprovisionamento automático de nós ao nível do pod NoScaleUp para ver detalhes.
    • rejectedMigs[].reason: Motivos por MIG pelos quais o escalador automático de clusters não pode aumentar o tamanho de um MIG específico para acomodar este grupo de pods (por exemplo, o nó do MIG é demasiado pequeno para os pods). Consulte a secção Motivos ao nível do MIG para noScaleUp para ver detalhes.

Exemplo

O exemplo de registo seguinte 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 existem nós cuja eliminação está bloqueada pelo escalador automático do cluster.

  • Os nós que não podem ser removidos porque a respetiva utilização é elevada não estão incluídos em eventos noScaleDown.
  • Os eventos noScaleDown são de melhor esforço, ou seja, estes eventos não abrangem todos os motivos possíveis pelos quais o redimensionador automático de clusters não consegue reduzir os recursos.
  • Os eventos noScaleDown são limitados para restringir o volume de registos produzido. Cada motivo persistente só é emitido a cada dois minutos.
  • A lista de nós é truncada para 50 entradas arbitrárias. Pode encontrar o número real de nós no campo nodesTotalCount.

Campos de motivo

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

  • reason: fornece um motivo global pelo qual o redimensionador automático de clusters é impedido de reduzir a escala (por exemplo, um período de recuo após o aumento de recursos recente). Consulte a secção Motivos de nível superior NoScaleDown para ver detalhes.
  • nodes[].reason: fornece motivos por nó para explicar por que motivo o escalador automático de clusters está impedido de eliminar um nó específico (por exemplo, não existe nenhum local para mover os pods do nó). Consulte a secção Motivos ao nível do nó para a não redução para ver detalhes.

Exemplo

O exemplo de registo seguinte 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"
      }
    }
  }
}

Mensagens

Os eventos emitidos pelo escalador automático de clusters usam mensagens parametrizadas para fornecer explicações para o evento. O campo parameters está disponível com o campo messageId, como neste exemplo de registo para um evento NoScaleUp.

Esta secção fornece descrições para vários messageId e os respetivos parâmetros. No entanto, esta secção não contém todas as mensagens possíveis e pode ser expandida em qualquer altura.

Erros do ScaleUp

Pode encontrar mensagens de erro de eventos para eventos scaleUp no evento eventResult correspondente, no campo resultInfo.results[].errorMsg.

Quando uma operação de expansão falha porque excede uma quota, trata-se de um erro de criação de nós que aciona um período de recuo do sistema, que pode durar até 30 minutos. Para mais informações, consulte a secção Períodos de retirada.

Mensagem Detalhes Parâmetros Mitigação
"scale.up.error.out.of.resources" Os erros de recursos ocorrem quando tenta pedir novos recursos numa zona que não pode satisfazer o seu pedido devido à indisponibilidade atual de um recurso do Compute Engine, como GPUs ou CPUs. IDs MIG com falhas. Siga os passos de resolução de problemas de disponibilidade de recursos na documentação do Compute Engine.
"scale.up.error.quota.exceeded" O evento scaleUp falhou porque não foi possível aumentar alguns dos MIGs, devido à quota do Compute Engine excedida. IDs MIG com falhas. Consulte o separador Erros do MIG na Google Cloud consola para ver que quota está a ser excedida. Depois de saber qual é a quota que está a ser excedida, siga as instruções para pedir um aumento da quota.
"scale.up.error.waiting.for.instances.timeout" A expansão do grupo de instâncias gerido não foi possível devido ao limite de tempo. IDs MIG com falhas. Esta mensagem deve ser transitória. Se persistir, contacte o apoio ao cliente do Google Cloud para uma investigação mais detalhada.
"scale.up.error.ip.space.exhausted" Não é possível aumentar a escala porque as instâncias em alguns dos grupos de instâncias geridos ficaram sem IPs. Isto significa que o cluster não tem espaço de endereço IP não atribuído suficiente para usar para adicionar novos nós ou pods. IDs MIG com falhas. Siga os passos de resolução de problemas no artigo Não existe espaço de endereço IP livre suficiente para pods.
"scale.up.error.service.account.deleted" Não é possível aumentar a escala porque a conta de serviço foi eliminada. IDs MIG com falhas. Tente anular a eliminação da conta de serviço. Se este procedimento não for bem-sucedido, contacte o apoio ao cliente do Google Cloud para uma investigação mais detalhada.

Motivos para um evento noScaleUp

Um evento noScaleUp é emitido periodicamente quando existem pods não agendáveis no cluster e o redimensionador automático de cluster não consegue aumentar a escala do cluster para agendar os pods. Os eventos noScaleUp são a melhor tentativa possível e não abrangem todos os casos possíveis.

Motivos de nível superior de noScaleUp

As 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 que explica por que motivo o redimensionador automático de clusters não consegue aumentar os recursos do cluster.

Mensagem Detalhes Mitigação
"no.scale.up.in.backoff" Não é possível aumentar a escala porque o aumento da escala está num período de recuo (bloqueado temporariamente). Esta mensagem pode ocorrer durante eventos de expansão com um grande número de pods. Esta mensagem deve ser transitória. Verifique este erro após alguns minutos. Se esta mensagem persistir, contacte o apoio ao cliente do Google Cloud para uma investigação mais aprofundada.

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

As mensagens de motivo do aprovisionamento automático do nó de nível superior para eventos noScaleUp aparecem no campo noDecisionStatus.noScaleUp.napFailureReason. A mensagem contém um motivo de nível superior pelo qual o redimensionador automático de clusters não consegue aprovisionar novos conjuntos de nós.

Mensagem Detalhes Mitigação
"no.scale.up.nap.disabled"

Não foi possível aumentar a escala do aprovisionamento automático de nós porque o aprovisionamento automático de nós não está ativado ao nível do cluster.

Se o aprovisionamento automático de nós estiver desativado, os novos nós não são aprovisionados automaticamente se o pod pendente tiver requisitos que não possam ser satisfeitos por nenhum conjunto de nós existente.

Reveja a configuração do cluster e considere ativar o aprovisionamento automático de nós.

Motivos ao nível do MIG para noScaleUp

As mensagens de motivos ao nível do 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 redimensionador automático de clusters não consegue aumentar o tamanho de um MIG específico.

Mensagem Detalhes Parâmetros Mitigação
"no.scale.up.mig.skipped" Não é possível aumentar a escala de um MIG porque foi ignorado durante a simulação. Motivos pelos quais o MIG foi ignorado (por exemplo, não cumprir um requisito do agrupamento). Reveja os parâmetros incluídos na mensagem de erro e resolva o motivo pelo qual o MIG foi ignorado.
"no.scale.up.mig.failing.predicate" Não é possível aumentar a escala de um conjunto de nós devido a um predicado de agendamento com falhas para os pods pendentes. Nome do predicado com falha e motivos da falha. Reveja os requisitos do pod, como: regras de afinidade, manchas ou tolerâncias e requisitos de recursos.

Motivos de aprovisionamento automático de nós ao nível do grupo de pods noScaleUp

As mensagens de motivo de aprovisionamento automático de nós ao 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 escalador automático do cluster não consegue aprovisionar um novo conjunto de nós para agendar um grupo de pods específico.

Mensagem Detalhes Parâmetros Mitigação
"no.scale.up.nap.pod.gpu.no.limit.defined" A administração de contas automática de nós não conseguiu aprovisionar nenhum grupo de nós porque um pod pendente tem um pedido de GPU, mas os limites de recursos de GPU não estão definidos ao nível do cluster. Tipo de GPU pedido. Reveja o pedido de GPU do pod pendente e atualize a configuração do aprovisionamento automático de nós para limites de GPU ao nível do cluster.
"no.scale.up.nap.pod.gpu.type.not.supported" A Administração de contas automática de nós não aprovisionou nenhum grupo de nós para o pod porque tem pedidos para um tipo de GPU desconhecido. Tipo de GPU pedido. Verifique a configuração do pod pendente para o tipo de GPU para garantir que corresponde a um tipo de GPU suportado.
"no.scale.up.nap.pod.zonal.resources.exceeded" O aprovisionamento automático de nós não aprovisionou nenhum grupo de nós para o pod nesta zona porque, se o fizesse, violaria os limites máximos de recursos ao nível do cluster, excederia os recursos disponíveis na zona ou não existe nenhum tipo de máquina que se adequasse ao pedido. Nome da zona considerada. Reveja e atualize os limites máximos de recursos ao nível do cluster, os pedidos de recursos de pods ou as zonas disponíveis para o aprovisionamento automático de nós.
"no.scale.up.nap.pod.zonal.failing.predicates" A Administração de contas automática de nós não aprovisionou nenhum grupo de nós para o pod nesta zona devido a predicados com falhas. Nome da zona considerada e motivos pelos quais os predicados falharam. Reveja os requisitos do pod pendentes, como regras de afinidade, manchas, tolerâncias ou requisitos de recursos.

Erros ScaleDown

Pode encontrar mensagens de eventos de erro para eventos scaleDown no evento eventResult correspondente, no campo resultInfo.results[].errorMsg.

Mensagem de evento Detalhes Parâmetro Mitigação
"scale.down.error.failed.to.mark.to.be.deleted" Não foi possível marcar um nó para eliminação. Nome do nó com falhas. Esta mensagem deve ser transitória. Se persistir, contacte o apoio ao cliente do Google Cloud para uma investigação mais detalhada.
"scale.down.error.failed.to.evict.pods" O escalador automático do cluster não consegue reduzir a escala porque não foi possível expulsar alguns dos pods de um nó. Nome do nó com falhas. Reveja o PodDisruptionBudget para o pod e certifique-se de que as regras permitem a remoção de réplicas da aplicação quando for aceitável. Para saber mais, consulte Especificar um orçamento de interrupção para a sua aplicação na documentação do Kubernetes.
"scale.down.error.failed.to.delete.node.min.size.reached" O escalador automático do cluster não pode reduzir a escala porque não foi possível eliminar um nó devido ao cluster já ter o tamanho mínimo. Nome do nó com falhas. Reveja o valor mínimo definido para a escala automática do node pool e ajuste as definições conforme necessário. Para saber mais, consulte o artigo Erro: os nós no cluster atingiram o tamanho mínimo.

Motivos de um evento noScaleDown

Um evento noScaleDown é emitido periodicamente quando existem nós cuja eliminação está bloqueada pelo escalador automático do cluster. Os eventos noScaleDown são de melhor esforço e não abrangem todos os casos possíveis.

Motivos de nível superior de noScaleDown

As 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 escalador automático de clusters não consegue reduzir a escala do cluster.

Mensagem de evento Detalhes Mitigação
"no.scale.down.in.backoff" O escalamento automático do cluster não pode ser reduzido porque a redução está num período de recuo (bloqueado temporariamente).

Esta mensagem deve ser transitória e pode ocorrer quando tiver havido um evento de aumento recente.

Se a mensagem persistir, contacte o apoio ao cliente do Google Cloud para uma investigação mais aprofundada.

"no.scale.down.in.progress"

O redimensionador automático de clusters não consegue reduzir a escala porque uma redução de escala anterior ainda estava em curso.

Esta mensagem deve ser transitória, uma vez que o pod vai acabar por ser removido. Se esta mensagem ocorrer com frequência, reveja o período de tolerância de encerramento para a redução da escala de pods. Para acelerar a resolução, também pode eliminar o agrupamento se já não for necessário.

Motivos ao nível do nó para noScaleDown

As mensagens de motivo ao nível do nó para eventos noScaleDown aparecem em noDecisionStatus.noScaleDown.nodes[].reason field. A mensagem contém um motivo pelo qual o escalador automático do cluster não consegue remover um nó específico.

Mensagem de evento Detalhes Parâmetros Mitigação
"no.scale.down.node.scale.down.disabled.annotation" O escalador automático de clusters não pode remover um nó do node pool porque o nó está anotado com cluster-autoscaler.kubernetes.io/scale-down-disabled: true. N/A O escalador automático de clusters ignora os nós com esta anotação sem considerar a respetiva utilização, e esta mensagem é registada independentemente do fator de utilização do nó. Se quiser que o escalador automático de clusters reduza a escala destes nós, remova a anotação.
"no.scale.down.node.node.group.min.size.reached"

O redimensionador automático de clusters não consegue reduzir a escala quando o tamanho do grupo de nós excedeu o limite de tamanho mínimo.

Isto acontece porque a remoção de nós violaria os limites mínimos de recursos ao nível do cluster definidos nas definições de aprovisionamento automático de nós.

N/A Reveja o valor mínimo definido para o ajuste de escala automático do conjunto de nós. Se quiser que o dimensionamento automático do cluster reduza a escala deste nó, ajuste o valor mínimo.
"no.scale.down.node.minimal.resource.limits.exceeded"

O redimensionador automático de clusters não consegue reduzir a escala dos nós porque violaria os limites mínimos de recursos ao nível do cluster.

Estes são os limites de recursos definidos para a administração de contas automática de nós.

N/A Reveja os limites de memória e vCPU e, se quiser que o redimensionador automático de clusters reduza a escala deste nó, diminua os limites.
"no.scale.down.node.no.place.to.move.pods" O redimensionador automático de clusters não consegue reduzir a escala porque não existe nenhum local para mover os pods. N/A Se espera que o pod seja reagendado, reveja os requisitos de agendamento dos pods no nó subutilizado para determinar se podem ser movidos para outro nó no cluster. Para saber mais, consulte o Erro: Não existe nenhum local para mover os pods.
"no.scale.down.node.pod.not.backed.by.controller"

O pod está a bloquear a redução porque não tem um controlador.

Especificamente, o redimensionador automático de cluster não consegue reduzir a escala de um nó subutilizado devido a um pod que não tem um controlador reconhecido. Os controladores permitidos incluem ReplicationController, DaemonSet, Job, StatefulSet ou ReplicaSet.

Nome do pod de bloqueio. Defina a anotação "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" para o Pod ou defina um controlador aceitável.
"no.scale.down.node.pod.not.safe.to.evict.annotation" Um pod no nó tem a anotação safe-to-evict=false. Nome do pod de bloqueio. Se o Pod puder ser removido com segurança, edite o manifesto do Pod e atualize a anotação para "cluster-autoscaler.kubernetes.io/safe-to-evict": "true".
"no.scale.down.node.pod.kube.system.unmovable" O pod está a bloquear a redução porque é um pod não DaemonSet, não espelhado e sem um PodDisruptionBudget no espaço de nomes kube-system. Nome do pod de bloqueio.

Nas versões do GKE anteriores a 1.32.4-gke.1236000, o escalador automático do cluster não remove os pods no espaço de nomes kube-system. A partir da versão 1.32.4-gke.1236000, o escalador automático do cluster considera estes pods para remoção após terem sido criados durante uma hora.

Para resolver este problema, adicione um PodDisruptionBudget para os pods kube-system ou use uma combinação de taints e tolerâncias de node pools para separar os pods kube-system dos pods da aplicação. Para saber mais, consulte o artigo Erro: o pod kube-system não pode ser movido.

"no.scale.down.node.pod.not.enough.pdb" O pod está a bloquear a redução porque não tem um PodDisruptionBudget suficiente. Nome do pod de bloqueio. Reveja o PodDisruptionBudget do pod e considere torná-lo menos restritivo. Para saber mais, consulte o artigo Erro: Not enough PodDisruptionBudget.
"no.scale.down.node.pod.controller.not.found" O pod está a bloquear a redução porque não é possível encontrar o respetivo controlador (por exemplo, uma implementação ou um ReplicaSet). N/A Para determinar que ações foram tomadas que deixaram o pod em execução depois de o respetivo controlador ter sido removido, reveja os registos. Para resolver este problema, elimine manualmente o pod.
"no.scale.down.node.pod.unexpected.error" O pod está a bloquear a redução devido a um erro inesperado. N/A A causa principal deste erro é desconhecida. Contacte o apoio ao cliente do Google Cloud para uma investigação mais aprofundada.

O que se segue?