Ver eventos del escalador automático de clústeres

El escalador automático de clústeres de Google Kubernetes Engine (GKE) emite eventos de visibilidad, que están disponibles como entradas de registro en Cloud Logging. En esta página, se muestra cómo ver esos eventos registrados para obtener información sobre cuándo y por qué el escalador automático de clústeres de GKE toma decisiones de ajuste de escala automático.

Requisitos de disponibilidad

La capacidad de ver eventos registrados para el escalador automático de clústeres está disponible en las siguientes versiones del clúster:

Tipo de evento Versión del clúster
status, scaleUp, scaleDown, eventResult 1.15.4-gke.7 y posterior
nodePoolCreated, nodePoolDeleted. 1.15.4-gke.18 y posterior
noScaleUp 1.16.6-gke.3 y posterior
noScaleDown 1.16.8-gke.2 y posterior

Visualizar eventos

Los eventos de visibilidad para el escalador automático de clústeres se almacenan en un registro de Cloud Logging, en el mismo proyecto en el que se encuentra tu clúster de GKE.

Para ver los registros, realiza lo siguiente:

  1. En Cloud Console, ve a la página Visor de registros.

    Ir al visor de registros

  2. Busca los registros con la interfaz de consulta básica o avanzada.

    Para buscar registros con la interfaz de consulta básica, realiza lo siguiente:

    1. En la lista desplegable de recursos, selecciona Clúster de Kubernetes y, luego, selecciona la ubicación del clúster y el nombre del clúster.
    2. En la lista desplegable de tipos de registros, selecciona container.googleapis.com/cluster-autoscaler-visibility.
    3. En la lista desplegable de intervalos de tiempo, selecciona el intervalo de tiempo deseado.

    Para buscar registros con la interfaz de consulta avanzada, aplica el siguiente filtro avanzado:

    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"
    

    En el ejemplo anterior, se ilustra lo siguiente:

    • cluster-location es la ubicación del clúster que estás inspeccionando.
    • cluster-name es el nombre del clúster.
    • project-id es el ID del proyecto.

Tipos de eventos

Todos los eventos registrados están en formato JSON y se pueden encontrar en el campo jsonPayload de una entrada de registro. Todas las marcas de tiempo de los eventos son marcas de tiempo de UNIX.

Este es un resumen de los tipos de eventos que emite el escalador automático de clústeres:

Tipo de evento Descripción
status Ocurre de forma periódica y describe el tamaño de todos los grupos de nodos con ajuste de escala automático y el tamaño objetivo de todos los grupos de nodos con ajuste de escala automático que observa el escalador automático de clústeres.
scaleUp Ocurre cuando el escalador automático de clústeres escala verticalmente el clúster.
scaleDown Ocurre cuando el escalador automático del clúster reduce la escala del clúster.
eventResult Ocurre cuando un evento scaleUp o scaleDown se completa con o sin éxito.
nodePoolCreated Ocurre cuando el escalador automático de clústeres con aprovisionamiento automático de nodos habilitado crea un grupo de nodos nuevo.
nodePoolDeleted Ocurre cuando el escalador automático de clústeres con aprovisionamiento automático de nodos habilitado borra un grupo de nodos.
noScaleUp Ocurre cuando hay pods no programables en el clúster y el escalador automático de clústeres no puede escalar el clúster para alojar los pods.
noScaleDown Ocurre cuando hay nodos que el escalador automático de clústeres bloquea.

Evento de estado

Un evento status se emite de forma periódica y describe el tamaño real de todos los grupos de nodos con ajuste de escala automático y el tamaño objetivo de todos los grupos de nodos con ajuste de escala automático que observa el escalador automático de clústeres.

Ejemplo

En el siguiente ejemplo de registro, se muestra un evento status:

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

Evento de ScaleUp

Se emite un evento scaleUp cuando el escalador automático escala verticalmente del clúster. Este evento contiene información sobre qué grupos de instancias administrados (MIG) se escalaron, en cuántos nodos y qué pods no programables activaron el evento.

La lista de pods activadores se trunca a 50 entradas arbitrarias. La cantidad real de pods activadores se puede encontrar en el campo triggeringPodsTotalCount.

Ejemplo

En el siguiente ejemplo de registro, se muestra 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 de ScaleDown

Se emite un evento scaleDown cuando el escalador automático de clústeres reduce la escala. Este evento contiene información sobre qué nodos se quitan y qué pods se deben expulsar debido a ello.

Los campos cpuRatio y memRatio describen el uso de CPU y memoria del nodo, como un porcentaje. Este uso es una suma de las solicitudes de pod divididas por los nodos asignables, no el uso real.

La lista de pods expulsados se trunca a 50 entradas arbitrarias. La cantidad real de pods expulsados se puede encontrar en el campo evictedPodsTotalCount.

Ejemplo

En el siguiente ejemplo de registro, se muestra 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"
          }
        }
      ]
    }
  }
}

Evento de EventResult

Se emite un evento eventResult cuando un evento scaleUp o scaleDown se completa con o sin éxito. Este evento contiene una lista de ID de eventos (del campo eventId en eventos scaleUp o scaleDown), junto con mensajes de error. Un mensaje de error vacío indica que el evento se completó correctamente. Se agrega una lista de eventos eventResult en el campo results.

Para diagnosticar errores, consulta las secciones Errores de ScaleUp y Errores de ScaleDown.

Ejemplo

En el siguiente ejemplo de registro, se muestra 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

Se emite un evento nodePoolCreated cuando el escalador automático del clúster con aprovisionamiento automático de nodos crea un grupo de nodos nuevo. Este evento contiene el nombre del grupo de nodos creado y una lista de sus MIG. Si el grupo de nodos se creó debido a un evento scaleUp, el eventId del evento scaleUp correspondiente se incluye en el campo triggeringScaleUpId.

Ejemplo

En el siguiente ejemplo de registro, se muestra 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

Se emite un evento nodePoolDeleted cuando el escalador automático de clústeres con aprovisionamiento automático de nodos borra un grupo de nodos.

Ejemplo

En el siguiente ejemplo de registro, se muestra un evento nodePoolDeleted:

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

Evento noScaleUp

Un evento noScaleUp se emite de forma periódica cuando hay pods no programables en el clúster y el escalador automático de clústeres no puede escalar el clúster para alojar los pods.

  • Los eventos noScaleUp se basan en el mejor esfuerzo, es decir, estos eventos no abarcan todos los motivos posibles por los que el escalador automático de clústeres no puede escalar verticalmente.
  • Los eventos noScaleUp están limitados para limitar el volumen del registro producido. Cada motivo persistente solo se emite cada dos minutos.
  • Todos los motivos se pueden dividir de forma arbitraria en varios eventos. Por ejemplo, no hay garantía de que todos los motivos de MIG rechazados para un solo grupo de pod aparezcan en el mismo evento.
  • La lista de grupos de pods no controlados se trunca a 50 entradas arbitrarias. La cantidad real de grupos de pods no controlados se puede encontrar en el campo unhandledPodGroupsTotalCount.

Campos de motivos

Los siguientes campos ayudan a explicar por qué no se realizó el escalamiento vertical:

  • reason: Proporciona un motivo global por el que se evita que el escalador automático del clúster escale verticalmente. Consulta la sección Motivos de nivel superior de noScaleUp para obtener más detalles.
  • napFailureReason: Proporciona un motivo global que impide que el escalador automático de clústeres aprovisione grupos de nodos adicionales (por ejemplo, el aprovisionamiento automático de nodos está inhabilitado). Consulta la sección Motivos de aprovisionamiento automático de nodos de nivel superior de noScaleUp para obtener más detalles.
  • skippedMigs[].reason: Proporciona información sobre por qué se omitió un MIG en particular. El escalador automático de clústeres omite algunos MIG para cualquier pod durante un intento de escalamiento vertical (por ejemplo, porque agregar otro nodo excedería los límites de recursos de todo el clúster). Consulta la sección Motivos de nivel de MIG de noScaleUp para obtener más detalles.
  • unhandledPodGroups: Contiene información sobre por qué un grupo particular de pods no programables no activa el escalamiento vertical. Los pods se agrupan por su controlador inmediato. Los pods sin un controlador están en grupos por sí mismos. Cada grupo de pods contiene un pod de ejemplo arbitrario y la cantidad de pods en el grupo, así como los siguientes motivos:
    • napFailureReasons: Motivos por los que el escalador automático de clústeres no puede aprovisionar un grupo de nodos nuevo para alojar este grupo de pods (por ejemplo, los pods tienen restricciones de afinidad) Consulta la sección Motivos de aprovisionamiento automático de nodos de nivel de pods para obtener más detalles.
    • rejectedMigs[].reason: Motivos específicos de cada MIG por los que el escalador automático de clústeres no puede aumentar el tamaño de un MIG en particular para alojar este grupo de pods (por ejemplo, el nodo del MIG es demasiado pequeño para los pods). Consulta la sección Motivos de nivel de MIG de noScaleUp para obtener más detalles.

Ejemplo

En el siguiente ejemplo de registro, se muestra 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 se emite de forma periódica cuando hay nodos bloqueados para que el escalador automático de clústeres no los borre.

  • Los nodos que no se pueden quitar porque su uso es alto no se incluyen en los eventos noScaleDown.
  • Los eventos noScaleDown se basan en el mejor esfuerzo, es decir, estos eventos no abarcan todos los motivos posibles por los que el escalador automático de clústeres no puede reducir la escala.
  • Los eventos noScaleDown se regulan para limitar el volumen de registro producido. Cada motivo persistente solo se emitirá cada dos minutos.
  • La lista de nodos se trunca a 50 entradas arbitrarias. La cantidad real de nodos se puede encontrar en el campo nodesTotalCount.

Campos de motivos

Los siguientes campos ayudan a explicar por qué no se redujo la escala:

  • reason: Proporciona un motivo global por el que se evita que el escalador automático de clústeres reduzca la escala (por ejemplo, un período de retirada después del escalamiento reciente). Consulta la sección Motivos de nivel superior de noScaleDown para obtener más detalles.
  • nodes[].reason: Proporciona los motivos por nodo de por qué se evita que el escalador automático de clústeres borre un nodo en particular (por ejemplo, no hay lugar para mover los pods del nodo). Consulta la sección de motivos de nivel de nodo de noScaleDown para obtener más detalles.

Ejemplo

En el siguiente ejemplo de registro, se muestra 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"
      }
    }
  }
}

Situaciones de depuración

En esta sección, se proporciona orientación sobre cómo depurar eventos de escalamiento.

El clúster no escala verticalmente

Situación: Creé un pod en mi clúster, pero hace una hora que está en el estado Pendiente. El escalador automático de clústeres no aprovisionó ningún nodo nuevo para alojar el pod.

Solución:

  1. En el visor de registros, busca los detalles de registro para los eventos del escalador automático de clústeres, como se describe en la sección Visualiza eventos.
  2. Busca eventos scaleUp que contengan el pod deseado en el campo triggeringPods. Puedes filtrar las entradas de registro, incluido el filtrado por un valor de campo JSON particular. Obtén más información en Consultas avanzadas de registros.

    1. Busca un EventResult que contenga el mismo eventId que el evento scaleUp.
    2. Mira el campo errorMsg y consulta la lista de mensajes de error de scaleUp posibles.

    Ejemplo de error de scaleUp: Para un evento scaleUp, descubres que el error es "scale.up.error.quota.exceeded", lo que indica que “Un evento scaleUp falló porque algunos de los MIG no se pudieron aumentar debido a que se superó la cuota”. Para resolver el problema, revisa la configuración de tu cuota y aumenta la configuración que está a punto de superarse. El escalador automático de clústeres agrega un nodo nuevo y el pod se programa.

  3. De lo contrario, busca eventos noScaleUp y revisa los siguientes campos:

    • unhandledPodGroups: contiene información sobre el pod (o el controlador del pod).
    • reason: proporciona motivos globales que indican que el escalamiento vertical podría estar bloqueado.
    • skippedMigs: proporciona los motivos por los que se pueden omitir algunos MIG.
  4. Consulta las siguientes secciones que contienen los posibles motivos de los eventos noScaleUp:

    Ejemplo de noScaleUp: Encontraste un evento noScaleUp para tu pod y todos los MIG en el campo rejectedMigs tienen el mismo ID de mensaje de motivo de "no.scale.up.mig.failing.predicate" con dos parámetros:"NodeAffinity" y "node(s) did not match node selector". Después de consultar la lista de mensajes de error, descubres que “no puedes aumentar la escala de un MIG porque se produjo un error de predicado en él”; los parámetros son el nombre del predicado con errores y la razón por la que falló. Para resolver el problema, revisas las especificaciones del pod y descubres que tiene un selector de nodos que no coincide con ningún MIG en el clúster. Borra el selector de la especificación del pod y vuelve a crear el pod. El escalador automático de clústeres agrega un nodo nuevo y el pod se programa.

  5. Si no hay eventos noScaleUp, usa otros métodos de depuración para resolver el problema.

La escala del clúster no se reduce

Situación: Tengo un nodo en mi clúster que usó solo el 10% de su CPU y memoria durante los últimos días. A pesar del bajo uso, el escalador automático de clústeres no borró el nodo como se esperaba.

Solución:

  1. En el visor de registros, busca los detalles de registro para los eventos del escalador automático de clústeres, como se describe en la sección Visualiza eventos.
  2. Busca eventos scaleDown que contengan el nodo deseado en el campo nodesToBeRemoved. Puedes filtrar las entradas de registro, incluido el filtrado por un valor de campo JSON particular. Obtén más información en Consultas avanzadas de registros.
    1. En el evento scaleDown, busca un evento EventResult que contenga el eventId asociado.
    2. Mira el campo errorMsg y consulta la lista de mensajes de error de scaleDown posibles.
  3. De lo contrario, busca eventos noScaleDown que tengan el nodo deseado en el campo nodes. Revisa el campo reason en busca de cualquier motivo global que indique que se puede bloquear la reducción de la escala.
  4. Consulta las siguientes secciones que contienen los posibles motivos de los eventos de noScaleDown:

    Ejemplo de noScaleDown: Encontraste un evento noScaleDown que contiene un motivo por nodo para tu nodo. El ID del mensaje es "no.scale.down.node.pod.has.local.storage" y hay un solo parámetro: "test-single-pod". Después de consultar la lista de mensajes de error, descubres que esto significa que el “pod está bloqueando la reducción de escala porque solicita almacenamiento local”. Consultas las Preguntas frecuentes sobre el escalador automático de clústeres de Kubernetes y descubres que la solución es agregar una anotación "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" al pod. Después de aplicar la anotación, el escalador automático de clústeres reduce la escala correctamente.

  5. Si no hay eventos noScaleDown, usa otros métodos de depuración para resolver el problema.

Mensajes

Los eventos que emite el escalador automático de clústeres usan mensajes con parámetros (vistos en el campo messageId) para proporcionar explicaciones del evento.

En esta sección, se proporcionan descripciones para varios messageId y sus parámetros correspondientes. Sin embargo, esta sección no contiene todos los mensajes posibles y se puede extender en cualquier momento.

Errores de scaleUp

Los mensajes de error para los eventos scaleUp se encuentran en el evento eventResult correspondiente, en el campo resultInfo.results[].errorMsg.

Mensaje Descripción

"scale.up.error.outOfResources"
El evento de scaleUp falló porque algunos de los MIG no se pudieron aumentar debido a la falta de recursos.

Parámetros: ID de MIG con errores.


"scale.up.error.quota.exceeded"
El evento scaleUp falló porque algunos de los MIG no se pudieron aumentar debido a que se superó la cuota de Compute Engine.

Parámetros: ID de MIG con errores.


"scale.up.error.waiting.for.instances.timeout"
El evento de scaleUp falló porque las instancias en algunos de los MIG no aparecieron a tiempo.

Parámetros: ID de MIG con errores.

Errores de scaleDown

Los mensajes de error para los eventos scaleDown se encuentran en el evento eventResult correspondiente, en el campo resultInfo.results[].errorMsg.

Mensaje Descripción

"scale.down.error.failed.to.mark.to.be.deleted"
El evento scaleDown falló porque un nodo no se pudo marcar para su eliminación.

Parámetros: Nombre de nodo con errores.


"scale.down.error.failed.to.evict.pods"
El evento scaleDown falló porque algunos de los pods no se pudieron expulsar de un nodo.

Parámetros: Nombre de nodo con errores.


"scale.down.error.failed.to.delete.node.min.size.reached"
El evento scaleDown falló porque no se pudo borrar un nodo debido a que el clúster ya tenía el tamaño mínimo.

Parámetros: Nombre de nodo con errores.

Motivos de un evento noScaleUp

Motivos de nivel superior de noScaleUp

Los mensajes de motivo de nivel superior para los eventos noScaleUp aparecen en el campo noDecisionStatus.noScaleUp.reason. El mensaje contiene un motivo de nivel superior que explica por qué el escalador automático de clústeres no puede escalar verticalmente el clúster.

Mensaje Descripción

"no.scale.up.in.backoff"
Se produjo un noScaleUp porque el escalamiento vertical está en un período de retirada (bloqueado temporalmente).

Motivos de aprovisionamiento automático de nodos de nivel superior de noScaleUp

Los mensajes de motivo de aprovisionamiento automático de nodos de nivel superior para eventos noScaleUp aparecen en el campo noDecisionStatus.noScaleUp.napFailureReason. El mensaje contiene un motivo de nivel superior que explica por qué el escalador automático de clústeres no puede aprovisionar nuevos grupos de nodos.

Mensaje Descripción

"no.scale.up.nap.disabled"
El aprovisionamiento automático de nodos no aprovisionó ningún grupo de nodos porque se inhabilitó el aprovisionamiento automático de nodos. Consulta Habilita el aprovisionamiento automático de nodos para obtener más detalles.

"no.scale.up.nap.no.locations.available"
El aprovisionamiento automático de nodos no aprovisionó ningún grupo de nodos porque no había ubicaciones de aprovisionamiento automático de nodos disponibles.

Motivos de nivel de MIG de noScaleUp

Los mensajes de motivo de nivel MIG para los eventos noScaleUp aparecen en los campos noDecisionStatus.noScaleUp.skippedMigs[].reason y noDecisionStatus.noScaleUp.unhandledPodGroups[].rejectedMigs[].reason. El mensaje contiene un motivo por el que el escalador automático de clústeres no puede aumentar el tamaño de un MIG en particular.

Mensaje Descripción

"no.scale.up.mig.skipped"
No se puede escalar verticalmente un MIG porque se omitió durante la simulación.

Parámetros: motivos legibles por los que se omitió.


"no.scale.up.mig.failing.predicate"
No se puede escalar verticalmente un MIG porque falló un predicado para el MIG.

Parámetros: El nombre del predicado que falló, motivos legibles por los que falló.

Motivos de aprovisionamiento automático de nodos de nivel de grupo de pods

Los mensajes de motivo de aprovisionamiento automático de nodos de nivel de grupo para los eventos noScaleUp aparecen en el campo noDecisionStatus.noScaleUp.unhandledPodGroups[].napFailureReasons[]. El mensaje contiene un motivo por el que el escalador automático de clústeres no puede aprovisionar un grupo de nodos nuevo para alojar un grupo de pods en particular.

Mensaje Descripción

"no.scale.up.nap.pod.gpu.no.limit.defined"
El aprovisionamiento automático de nodos no aprovisionó ningún grupo de nodos para el pod porque el pod tiene una solicitud de GPU y la GPU no tiene un límite definido.

Parámetros: Tipo de GPU solicitado


"no.scale.up.nap.pod.gpu.type.not.supported"
El aprovisionamiento automático de nodos no aprovisionó ningún grupo de nodos para el pod porque especifica una GPU no compatible. Consulta Configura límites de GPU para obtener más detalles.

Parámetros: Tipo de GPU solicitado


"no.scale.up.nap.pod.gpu.other.error"
El aprovisionamiento automático de nodos no aprovisionó ningún grupo de nodos para el pod debido a otros problemas con la configuración de GPU. Consulta Configura límites de GPU para obtener más detalles.

"no.scale.up.nap.pod.zonal.resources.exceeded"
El aprovisionamiento automático de nodos no aprovisionó ningún grupo de nodos para el pod en esta zona porque hacerlo infringiría los límites de recursos.

Parámetros: Nombre de la zona en cuestión.


"no.scale.up.nap.pod.zonal.failing.predicates"
El aprovisionamiento automático de nodos no aprovisionó ningún grupo de nodos para el pod en esta zona debido a errores en los predicados.

Parámetros: Nombre de la zona en cuestión, motivos legibles

Motivos de un evento noScaleDown

Motivos de nivel superior de noScaleDown

Los mensajes de motivo de nivel superior para los eventos noScaleDown aparecen en el campo noDecisionStatus.noScaleDown.reason. El mensaje contiene un motivo de nivel superior por el que el escalador automático de clústeres no puede reducir la escala del clúster.

Mensaje Descripción

"no.scale.down.in.backoff"
Se produjo un evento noScaleDown porque la reducción de la escala se encuentra en un período de retirada (bloqueado temporalmente).

"no.scale.down.in.progress"
Se produjo un evento noScaleDown porque todavía está en curso un evento scaleDown anterior.

Motivos de nivel de nodo de noScaleDown

Los mensajes de motivo de nivel de nodo para los eventos noScaleDown aparecen en el campo noDecisionStatus.noScaleDown.nodes[].reason. El mensaje contiene un motivo por el que el escalador automático de clústeres no puede quitar un nodo en particular.

Mensaje Descripción

"no.scale.down.node.scale.down.disabled.annotation"
No se puede quitar el nodo porque tiene una anotación de “la reducción de escala está inhabilitada”. Consulta las Preguntas frecuentes sobre el escalador automático de clústeres de Kubernetes para obtener más detalles.

"no.scale.down.node.node.group.min.size.reached"
No se puede quitar el nodo porque su grupo de nodos ya tiene el tamaño mínimo.

"no.scale.down.node.minimal.resource.limits.exceeded"
No se puede quitar el nodo porque infringiría los límites de recursos mínimos de todo el clúster.

"no.scale.down.node.no.place.to.move.pods"
No se puede quitar el nodo porque no hay lugar para mover sus pods.

"no.scale.down.node.pod.not.backed.by.controller"
El pod está bloqueando la reducción de escala porque no está respaldado por un controlador. Consulta las Preguntas frecuentes sobre el escalador automático de clústeres de Kubernetes para obtener más detalles.

Parámetros: Nombre del pod que causa el bloqueo.


"no.scale.down.node.pod.has.local.storage"
El pod está bloqueando la reducción de escala porque solicita almacenamiento local. Consulta las Preguntas frecuentes sobre el escalador automático de clústeres de Kubernetes para obtener más detalles.

Parámetros: Nombre del pod que causa el bloqueo.


"no.scale.down.node.pod.not.safe.to.evict.annotation"
El pod está bloqueando la reducción de escala porque tiene una anotación de “la expulsión no es segura”. Consulta las Preguntas frecuentes sobre el escalador automático de clústeres de Kubernetes para obtener más detalles.

Parámetros: Nombre del pod que causa el bloqueo.


"no.scale.down.node.pod.kube.system.unmovable"
El pod está bloqueando la reducción de escala porque es un pod de kube-system sin daemonset, sin duplicados y no asignado por pdb. Consulta las Preguntas frecuentes sobre el escalador automático de clústeres de Kubernetes para obtener más detalles.

Parámetros: Nombre del pod que causa el bloqueo.


"no.scale.down.node.pod.not.enough.pdb"
El pod está bloqueando la reducción de escala porque no tiene suficiente PodDisruptionBudget. Consulta las Preguntas frecuentes sobre el escalador automático de clústeres de Kubernetes para obtener más detalles.

Parámetros: Nombre del pod que causa el bloqueo.

Próximos pasos