Ver los eventos de la herramienta de adaptación dinámica de clústeres

En esta página se proporciona información sobre los eventos de visibilidad emitidos por la herramienta de escalado automático de clústeres en Google Kubernetes Engine (GKE). Al analizar estos eventos, puede obtener información valiosa sobre cómo gestiona la herramienta de adaptación dinámica de clústeres el escalado de su clúster y comprender los motivos de sus decisiones.

La herramienta de escalado automático de clústeres de GKE emite eventos de visibilidad, que están disponibles como entradas de registro en Cloud Logging. Los eventos descritos en esta guía son independientes de los eventos de Kubernetes que genera la herramienta de escalado automático de clústeres.

Requisitos

Para ver los eventos de la herramienta de escalado automático, debes habilitar Cloud Logging en tu clúster. Los eventos no se producirán si el registro está inhabilitado.

Antes de empezar

Antes de empezar, asegúrate de que has realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando gcloud components update.

Ver eventos

Los eventos de visibilidad de la herramienta de adaptación dinámica 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. También puedes ver estos eventos en las notificaciones de la página de Google Kubernetes Engine de la Google Cloud consola.

Ver registros de eventos de visibilidad

Para ver los registros, haga lo siguiente:

  1. En la Google Cloud consola, ve a la página Clústeres de Kubernetes.

    Ir a clústeres de Kubernetes

  2. Selecciona el nombre del clúster para ver la página Detalles del clúster.

  3. En la página Detalles del clúster, haga clic en la pestaña Registros.

  4. En la pestaña Registros, haga clic en la pestaña Registros de escalado automático para ver los registros.

  5. (Opcional) Para aplicar filtros más avanzados y acotar los resultados, haz clic en el botón con la flecha situado en la parte derecha de la página para ver los registros en el Explorador de registros.

Ver notificaciones de eventos de visibilidad

Para ver las notificaciones de eventos de visibilidad en la página de Google Kubernetes Engine, haz lo siguiente:

  1. Ve a la página Google Kubernetes Engine en la Google Cloud consola:

    Ir a Google Kubernetes Engine

  2. Consulta la columna Notificaciones de clústeres específicos para ver las notificaciones relacionadas con el escalado.

  3. Haga clic en la notificación para obtener información detallada, ver las acciones recomendadas y acceder a los registros de este evento.

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 segundos de Unix.

A continuación, se muestra un resumen de los tipos de eventos emitidos por la herramienta de escalado automático de clústeres:

Tipo de evento Descripción
status Se produce periódicamente y describe el tamaño de todos los grupos de nodos con autoescalado y el tamaño objetivo de todos los grupos de nodos con autoescalado, tal como los observa la herramienta de ajuste automático de escala del clúster.
scaleUp Se produce cuando la herramienta de adaptación dinámica de clústeres aumenta la escala del clúster.
scaleDown Se produce cuando la herramienta de adaptación dinámica de clústeres reduce el tamaño del clúster.
eventResult Se produce cuando un evento de ampliación o reducción se completa correctamente o no.
nodePoolCreated Se produce cuando la herramienta de adaptación dinámica del clúster con la opción aprovisionamiento automático de nodos habilitada crea un grupo de nodos.
nodePoolDeleted Se produce cuando la herramienta de escalado automático de clústeres con la opción aprovisionamiento automático de nodos habilitada elimina un grupo de nodos.
noScaleUp Se produce cuando hay pods que no se pueden programar en el clúster y la herramienta de adaptación dinámica de clústeres no puede escalar el clúster para dar cabida a los pods.
noScaleDown Se produce cuando hay nodos que no se pueden eliminar debido a la herramienta de adaptación dinámica de clústeres.

Evento de estado

Se emite un evento status periódicamente, que describe el tamaño real de todos los grupos de nodos con autoescalado y el tamaño objetivo de todos los grupos de nodos con autoescalado, tal como los observa el autoescalador de clústeres.

Ejemplo

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

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

Evento ScaleUp

Se emite un evento scaleUp cuando la herramienta de escalado automático de clústeres aumenta la escala del clúster. La herramienta de adaptación dinámica aumenta el tamaño de los grupos de nodos del clúster ampliando los grupos de instancias gestionados (MIGs) subyacentes de los grupos de nodos. Para obtener más información sobre cómo funciona el escalado vertical, consulta la sección ¿Cómo funciona el escalado vertical? de las preguntas frecuentes de la herramienta de escalado automático de clústeres de Kubernetes.

El evento contiene información sobre los MIGs que se han escalado verticalmente, el número de nodos y los pods no programables que han activado el evento.

La lista de pods activadores se trunca a 50 entradas arbitrarias. El número real de pods activados se puede consultar 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 ScaleDown

Se emite un evento scaleDown cuando la herramienta de ajuste automático de escala de clúster reduce la escala del clúster. Para obtener más información sobre cómo funciona la reducción de escala, consulta la sección ¿Cómo funciona la reducción de escala? de las preguntas frecuentes de la herramienta de adaptación dinámica de clústeres de Kubernetes.

Los campos cpuRatio y memRatio describen el uso de CPU y memoria del nodo en porcentaje. Esta utilización es la suma de las solicitudes de pods dividida por los recursos asignables de los nodos, no la utilización real.

La lista de pods desalojados se trunca a 50 entradas arbitrarias. El número real de pods desalojados se puede consultar en el campo evictedPodsTotalCount.

Usa la siguiente consulta para verificar si la herramienta de adaptación dinámica del clúster ha reducido el número de nodos:

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

Haz los cambios siguientes:

  • CLUSTER_NAME: el nombre del clúster.

  • COMPUTE_REGION: la región de Compute Engine del clúster, como us-central1.

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"
          }
        }
      ]
    }
  }
}

También puedes ver el evento scale-down en los nodos en los que no se esté ejecutando ninguna carga de trabajo (normalmente, solo los pods del sistema creados por DaemonSets).

Usa la siguiente consulta para ver los registros 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")

Haz los cambios siguientes:

  • PROJECT_ID: tu ID de proyecto.

  • CLUSTER_NAME: el nombre del clúster.

  • COMPUTE_REGION: la región de Compute Engine del clúster, como us-central1.

Evento EventResult

Se emite un evento eventResult cuando se completa correctamente o no un evento scaleUp o scaleDown. Este evento contiene una lista de IDs de eventos (del campo eventId en los eventos scaleUp o scaleDown), junto con mensajes de error. Un mensaje de error vacío indica que el evento se ha completado correctamente. En el campo results se agrega una lista de eventos eventResult.

Para diagnosticar errores, consulta las secciones Errores de escalado vertical y Errores de reducción vertical.

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 la herramienta de escalado automático de clústeres con la opción Aprovisionamiento automático de nodos habilitada crea un grupo de nodos. Este evento contiene el nombre del grupo de nodos creado y una lista de sus MIGs subyacentes. Si el grupo de nodos se ha creado 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 la herramienta de ajuste automático de escala del clúster con la opción aprovisionamiento automático de nodos habilitada elimina 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"
      ]
    }
  }
}

NoScaleUp event

Un evento noScaleUp se emite periódicamente cuando hay pods que no se pueden programar en el clúster y la herramienta de escalado automático de clústeres no puede aumentar el tamaño del clúster para dar cabida a los pods.

  • Los eventos noScaleUp se envían de la mejor forma posible, es decir, no cubren todos los motivos posibles por los que la herramienta de escalado automático de clústeres no puede aumentar la escala.
  • Los eventos noScaleUp se limitan para reducir el volumen de registros que se generan. Cada motivo persistente solo se emite cada dos minutos.
  • Todos los motivos se pueden dividir arbitrariamente en varios eventos. Por ejemplo, no se garantiza que todos los motivos de rechazo de MIG de un mismo grupo de pods aparezcan en el mismo evento.
  • La lista de grupos de pods no gestionados se trunca a 50 entradas arbitrarias. El número real de grupos de pods no gestionados se puede consultar en el campo unhandledPodGroupsTotalCount.

Campos de motivo

Los siguientes campos ayudan a explicar por qué no se ha producido el aumento de escala:

  • reason: proporciona un motivo global por el que el autoescalador de clústeres no puede aumentar la escala. Consulta la sección Motivos de nivel superior de NoScaleUp para obtener más información.
  • napFailureReason: proporciona un motivo global que impide que la herramienta de adaptación dinámica del clúster aprovisione grupos de nodos adicionales (por ejemplo, si el aprovisionamiento automático de nodos está inhabilitado). Consulta la sección Motivos del aprovisionamiento automático de nodos de nivel superior NoScaleUp para obtener más información.
  • skippedMigs[].reason: proporciona información sobre por qué se ha omitido un MIG concreto. La herramienta de ajuste automático de escala del clúster no tiene en cuenta algunos MIGs para ningún pod durante un intento de escalado vertical (por ejemplo, porque añadir otro nodo superaría los límites de recursos de todo el clúster). Consulta la sección Motivos por los que no se puede aumentar la escala a nivel de MIG para obtener más información.
  • unhandledPodGroups: contiene información sobre por qué un grupo concreto de pods que no se pueden programar no activa el escalado vertical. Los pods se agrupan por su controlador inmediato. Los pods sin controlador están en grupos por sí solos. Cada grupo de pods contiene un pod de ejemplo arbitrario y el número de pods del grupo, así como los siguientes motivos:

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 periódicamente cuando hay nodos a los que la herramienta de escalado automático de clústeres no puede eliminar.

  • Los nodos que no se pueden quitar porque su utilización es alta no se incluyen en los eventos noScaleDown.
  • Los eventos NoScaleDown se registran de la mejor forma posible, es decir, no abarcan todos los motivos posibles por los que la herramienta de adaptación dinámica de clústeres no puede reducir el tamaño.
  • Los eventos NoScaleDown se limitan para reducir el volumen de registros que se generan. Cada motivo persistente solo se emitirá cada dos minutos.
  • La lista de nodos se trunca a 50 entradas arbitrarias. El número real de nodos se puede consultar en el campo nodesTotalCount.

Campos de motivo

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

  • reason: proporciona un motivo global por el que la herramienta de adaptación dinámica de clústeres no puede reducir el escalado (por ejemplo, un periodo de espera después de haber aumentado el escalado recientemente). Consulta la sección Motivos principales de NoScaleDown para obtener más información.
  • nodes[].reason: proporciona los motivos por los que el autoescalador de clústeres no puede eliminar un nodo concreto (por ejemplo, no hay ningún sitio al que mover los pods del nodo). Consulta la sección Motivos a nivel de nodo de NoScaleDown para obtener más información.

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

Mensajes

Los eventos emitidos por la herramienta de escalado automático de clústeres usan mensajes parametrizados para proporcionar explicaciones sobre el evento. El campo parameters está disponible con el campo messageId, como en este registro de ejemplo de un evento NoScaleUp.

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

Errores de ScaleUp

Puedes encontrar mensajes de error de eventos de scaleUp en el evento de eventResult correspondiente, en el campo resultInfo.results[].errorMsg.

Cuando una operación de escalado vertical falla porque supera una cuota, se produce un error de creación de nodos que activa un periodo de espera del sistema, que puede durar hasta 30 minutos. Para obtener más información, consulta Periodos de espera.

Mensaje Detalles Parámetros Solución
"scale.up.error.out.of.resources" Los errores de recursos se producen cuando intentas solicitar recursos nuevos en una zona que no puede satisfacer tu solicitud debido a la falta de disponibilidad de un recurso de Compute Engine, como GPUs o CPUs. IDs de MIG con errores. Sigue los pasos para solucionar problemas de disponibilidad de recursos de la documentación de Compute Engine.
"scale.up.error.quota.exceeded" Se ha producido un error en el evento de escalado vertical porque no se ha podido aumentar el tamaño de algunos MIGs debido a que se ha superado la cuota de Compute Engine. IDs de MIG con errores. Consulta la pestaña Errores del MIG en la consola de Google Cloud para ver qué cuota se está superando. Una vez que sepas qué cuota se ha superado, sigue las instrucciones para solicitar un aumento de cuota.
"scale.up.error.waiting.for.instances.timeout" No se ha podido aumentar el tamaño del grupo de instancias administrado porque se ha agotado el tiempo de espera. IDs de MIG con errores. Este mensaje debería ser transitorio. Si el problema persiste, ponte en contacto con Cloud Customer Care para que investiguen el caso más a fondo.
"scale.up.error.ip.space.exhausted" No se puede aumentar la escala porque las instancias de algunos grupos de instancias gestionadas se han quedado sin IPs. Esto significa que el clúster no tiene suficiente espacio de direcciones IP sin asignar para añadir nodos o pods. IDs de MIG con errores. Sigue los pasos para solucionar problemas que se indican en el artículo No hay suficiente espacio de direcciones IP libres para los pods.
"scale.up.error.service.account.deleted" No se puede aumentar la escala porque se ha eliminado la cuenta de servicio. IDs de MIG con errores. Intenta restaurar la cuenta de servicio. Si el procedimiento no funciona, ponte en contacto con Cloud Customer Care para que investiguen el problema.

Motivos de un evento noScaleUp

Un evento noScaleUp se emite periódicamente cuando hay pods que no se pueden programar en el clúster y la herramienta de adaptación dinámica de clústeres no puede aumentar la escala del clúster para programar los pods. Los eventos noScaleUp se envían de la mejor forma posible y no cubren todos los casos posibles.

NoScaleUp top-level reasons

Los mensajes de motivo de nivel superior de los eventos noScaleUp se muestran en el campo noDecisionStatus.noScaleUp.reason. El mensaje contiene un motivo de nivel superior por el que la herramienta de adaptación dinámica de clústeres no puede escalar verticalmente el clúster.

Mensaje Detalles Solución
"no.scale.up.in.backoff" No se puede aumentar la escala porque se encuentra en un periodo de espera (bloqueado temporalmente). Este mensaje puede producirse durante eventos de escalado vertical con un gran número de pods. Este mensaje debería ser transitorio. Comprueba este error al cabo de unos minutos. Si este mensaje persiste, ponte en contacto con Cloud Customer Care para investigar más a fondo el problema.

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

Los mensajes de motivo del aprovisionamiento automático de nodos de nivel superior de los eventos noScaleUp aparecen en el campo noDecisionStatus.noScaleUp.napFailureReason. El mensaje contiene un motivo de nivel superior por el que la herramienta de adaptación dinámica del clúster no puede aprovisionar nuevos grupos de nodos.

Mensaje Detalles Solución
"no.scale.up.nap.disabled"

El aprovisionamiento automático de nodos no se ha podido ampliar porque no está habilitado a nivel de clúster.

Si el aprovisionamiento automático de nodos está inhabilitado, los nodos nuevos no se aprovisionarán automáticamente si el pod pendiente tiene requisitos que no pueden satisfacer los grupos de nodos existentes.

Revisa la configuración del clúster y considera la posibilidad de habilitar el aprovisionamiento automático de nodos.

Motivos a nivel de MIG de NoScaleUp

Los mensajes de motivo a nivel de MIG de 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 la herramienta de escalado automático de clústeres no puede aumentar el tamaño de un MIG concreto.

Mensaje Detalles Parámetros Solución
"no.scale.up.mig.skipped" No se puede aumentar el número de instancias de un MIG porque se ha omitido durante la simulación. Motivos por los que se ha omitido la MIG (por ejemplo, porque falta un requisito de Pod). Revisa los parámetros incluidos en el mensaje de error y explica por qué se ha omitido la MIG.
"no.scale.up.mig.failing.predicate" No se puede aumentar la escala de un grupo de nodos debido a un predicado de programación fallido para los pods pendientes. Nombre del predicado que ha fallado y los motivos por los que ha fallado. Revisa los requisitos de los pods, como reglas de afinidad, taints o tolerancias, y requisitos de recursos.

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

Los mensajes de motivo del aprovisionamiento automático de nodos a nivel de grupo de pods para eventos noScaleUp aparecen en el campo noDecisionStatus.noScaleUp.unhandledPodGroups[].napFailureReasons[]. El mensaje contiene el motivo por el que la herramienta de adaptación dinámica del clúster no puede aprovisionar un nuevo grupo de nodos para programar un grupo de pods concreto.

Mensaje Detalles Parámetros Solución
"no.scale.up.nap.pod.gpu.no.limit.defined" El aprovisionamiento automático de nodos no ha podido aprovisionar ningún grupo de nodos porque un pod pendiente tiene una solicitud de GPU, pero los límites de recursos de GPU no están definidos a nivel de clúster. Tipo de GPU solicitado. Revisa la solicitud de GPU del pod pendiente y actualiza la configuración de aprovisionamiento automático de nodos a nivel de clúster para definir los límites de GPU.
"no.scale.up.nap.pod.gpu.type.not.supported" El aprovisionamiento automático de nodos no ha aprovisionado ningún grupo de nodos para el pod porque tiene solicitudes de un tipo de GPU desconocido. Tipo de GPU solicitado. Comprueba la configuración del pod pendiente para ver el tipo de GPU y asegúrate de que coincide con un tipo de GPU compatible.
"no.scale.up.nap.pod.zonal.resources.exceeded" El aprovisionamiento automático de nodos no ha aprovisionado ningún grupo de nodos para el pod de esta zona porque, de lo contrario, se infringirían los límites máximos de recursos de todo el clúster, se superarían los recursos disponibles en la zona o no habría ningún tipo de máquina que pudiera ajustarse a la solicitud. Nombre de la zona considerada. Revisa y actualiza los límites máximos de recursos de todo el clúster, las solicitudes de recursos de los pods o las zonas disponibles para el aprovisionamiento automático de nodos.
"no.scale.up.nap.pod.zonal.failing.predicates" El aprovisionamiento automático de nodos no ha aprovisionado ningún grupo de nodos para el pod en esta zona debido a predicados fallidos. Nombre de la zona considerada y motivos por los que no se han cumplido los predicados. Revisa los requisitos del pod pendiente, como las reglas de afinidad, las contaminaciones, las tolerancias o los requisitos de recursos.

Errores de ScaleDown

Puede encontrar mensajes de eventos de error de eventos scaleDown en el evento eventResult correspondiente, en el campo resultInfo.results[].errorMsg.

Mensaje de evento Detalles Parámetro Solución
"scale.down.error.failed.to.mark.to.be.deleted" No se ha podido marcar un nodo para su eliminación. Nombre del nodo que falla. Este mensaje debería ser transitorio. Si el problema persiste, ponte en contacto con Cloud Customer Care para que investiguen el caso más a fondo.
"scale.down.error.failed.to.evict.pods" El autoescalador de clústeres no puede reducir el escalado porque no se han podido desalojar algunos de los pods de un nodo. Nombre del nodo que falla. Revisa el PodDisruptionBudget del pod y asegúrate de que las reglas permitan la expulsión de réplicas de aplicaciones cuando sea aceptable. Para obtener más información, consulta Specifying a Disruption Budget for your Application (Especificar un presupuesto de interrupciones para tu aplicación) en la documentación de Kubernetes.
"scale.down.error.failed.to.delete.node.min.size.reached" El autoescalador de clústeres no puede reducir el tamaño porque no se ha podido eliminar un nodo debido a que el clúster ya tiene el tamaño mínimo. Nombre del nodo que falla. Revisa el valor mínimo definido para el autoescalado del grupo de nodos y ajusta la configuración según sea necesario. Para obtener más información, consulta el artículo Error: Nodes in the cluster have reached minimum size (Error: los nodos del clúster han alcanzado el tamaño mínimo).

Motivos de un evento noScaleDown

Un evento noScaleDown se emite periódicamente cuando hay nodos a los que la herramienta de escalado automático de clústeres no puede eliminar. Los eventos noScaleDown se realizan de la mejor forma posible y no cubren todos los casos posibles.

Motivos de nivel superior de NoScaleDown

Los mensajes de motivo de nivel superior de los eventos noScaleDown se muestran 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 el tamaño del clúster.

Mensaje de evento Detalles Solución
"no.scale.down.in.backoff" El autoescalador de clúster no puede reducir la escala porque se encuentra en un periodo de espera (bloqueado temporalmente).

Este mensaje debería ser temporal y puede producirse cuando se haya producido un evento de escalado reciente.

Si el mensaje persiste, ponte en contacto con el equipo de Asistencia de Cloud para investigar más a fondo el problema.

"no.scale.down.in.progress"

La herramienta de adaptación dinámica de clústeres no puede reducir la escala porque aún está en curso una reducción de escala anterior.

Este mensaje debería ser transitorio, ya que el pod se eliminará con el tiempo. Si este mensaje se produce con frecuencia, revisa el periodo de gracia de finalización de los pods que impiden la reducción. Para acelerar la resolución, también puedes eliminar el pod si ya no lo necesitas.

Motivos a nivel de nodo de NoScaleDown

Los mensajes de motivo a nivel de nodo de los eventos noScaleDown aparecen en noDecisionStatus.noScaleDown.nodes[].reason field. El mensaje contiene un motivo por el que el autoescalador de clústeres no puede eliminar un nodo concreto.

Mensaje de evento Detalles Parámetros Solución
"no.scale.down.node.scale.down.disabled.annotation" La herramienta de escalado automático de clústeres no puede quitar un nodo del grupo de nodos porque el nodo tiene la anotación cluster-autoscaler.kubernetes.io/scale-down-disabled: true. N/A La herramienta de ajuste automático de escala del clúster omite los nodos con esta anotación sin tener en cuenta su utilización. Este mensaje se registra independientemente del factor de utilización del nodo. Si quieres que el autoescalador de clúster reduzca el tamaño de estos nodos, quita la anotación.
"no.scale.down.node.node.group.min.size.reached"

El autoescalador de clústeres no puede reducir el tamaño cuando el tamaño del grupo de nodos ha superado el límite mínimo.

Esto ocurre porque, si se eliminan nodos, se infringirían los límites mínimos de recursos de todo el clúster definidos en la configuración de aprovisionamiento automático de nodos.

N/A Revisa el valor mínimo definido para el autoescalado del grupo de nodos. Si quieres que la herramienta de adaptación dinámica de clústeres reduzca el tamaño de este nodo, ajusta el valor mínimo.
"no.scale.down.node.minimal.resource.limits.exceeded"

El autoescalador de clústeres no puede reducir el tamaño de los nodos porque se infringirían los límites mínimos de recursos de todo el clúster.

Estos son los límites de recursos definidos para el aprovisionamiento automático de nodos.

N/A Revisa los límites de memoria y vCPU y, si quieres que el autoescalador de clúster reduzca el tamaño de este nodo, disminuye los límites.
"no.scale.down.node.no.place.to.move.pods" La herramienta de adaptación dinámica de clústeres no puede reducir el tamaño porque no hay ningún sitio donde mover los pods. N/A Si crees que el pod se debería reprogramar, revisa los requisitos de programación de los pods del nodo infrautilizado para determinar si se pueden mover a otro nodo del clúster. Para obtener más información, consulta el artículo Error: No hay ningún sitio donde mover los pods.
"no.scale.down.node.pod.not.backed.by.controller"

El pod está impidiendo la reducción porque no está respaldado por un controlador.

En concreto, el escalador automático de clústeres no puede reducir el tamaño de un nodo infrautilizado debido a un pod que no tiene un controlador reconocido. Los controladores permitidos son ReplicationController, DaemonSet, Job, StatefulSet o ReplicaSet.

Nombre del pod que bloquea. Define la anotación "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" para el pod o define un controlador aceptable.
"no.scale.down.node.pod.not.safe.to.evict.annotation" Un pod del nodo tiene la anotación safe-to-evict=false. Nombre del pod que bloquea. Si el pod se puede desalojar de forma segura, edita el manifiesto del pod y actualiza la anotación a "cluster-autoscaler.kubernetes.io/safe-to-evict": "true".
"no.scale.down.node.pod.kube.system.unmovable" El pod impide la reducción porque no es un DaemonSet, no es un pod reflejado y no tiene un PodDisruptionBudget en el espacio de nombres kube-system. Nombre del pod que bloquea.

En las versiones de GKE anteriores a la 1.32.4-gke.1236000, el escalador automático de clústeres no elimina los pods del espacio de nombres kube-system. A partir de la versión 1.32.4-gke.1236000, el escalador automático de clústeres tiene en cuenta estos pods para eliminarlos una hora después de que se hayan creado.

Para solucionar este problema, añade un PodDisruptionBudget para los pods de kube-system o usa una combinación de intolerancias y tolerancias de grupos de nodos para separar los pods de kube-system de los pods de tu aplicación. Para obtener más información, consulta Error: kube-system Pod unmoveable (Error: no se puede mover el pod kube-system).

"no.scale.down.node.pod.not.enough.pdb" El pod está impidiendo la reducción porque no tiene suficiente PodDisruptionBudget. Nombre del pod que bloquea. Revisa el PodDisruptionBudget del pod y plantéate hacerlo menos restrictivo. Para obtener más información, consulta Error: no hay suficiente PodDisruptionBudget.
"no.scale.down.node.pod.controller.not.found" El pod impide la reducción porque no se encuentra su controlador (por ejemplo, un Deployment o ReplicaSet). N/A Para determinar qué acciones se llevaron a cabo para que el pod siguiera ejecutándose después de que se eliminara su controlador, consulta los registros. Para solucionar este problema, elimina manualmente el pod.
"no.scale.down.node.pod.unexpected.error" El pod está impidiendo la reducción de recursos debido a un error inesperado. N/A Se desconoce la causa principal de este error. Ponte en contacto con Cloud Customer Care para que investiguen el problema.

Siguientes pasos