Supervisa las métricas de latencia de inicio

En esta página, se describen las métricas y los paneles disponibles para supervisar la latencia de inicio de las cargas de trabajo de Google Kubernetes Engine (GKE) y los nodos del clúster subyacentes. Puedes usar las métricas para hacer un seguimiento de la latencia de inicio, solucionar problemas relacionados con ella y reducirla.

Esta página está destinada a los operadores y administradores de plataformas que necesitan supervisar y optimizar la latencia de inicio de sus cargas de trabajo. Para obtener más información sobre los roles comunes a los que hacemos referencia en Google Cloud el contenido, consulta Roles y tareas comunes del usuario de GKE.

Descripción general

La latencia de inicio afecta significativamente la forma en que tu aplicación responde a los aumentos repentinos de tráfico, la rapidez con la que sus réplicas se recuperan de las interrupciones y la eficiencia de los costos operativos de tus clústeres y cargas de trabajo. Supervisar la latencia de inicio de tus cargas de trabajo puede ayudarte a detectar degradaciones de latencia y hacer un seguimiento del impacto de las actualizaciones de la carga de trabajo y la infraestructura en la latencia de inicio.

Optimizar la latencia de inicio de la carga de trabajo tiene los siguientes beneficios:

  • Reduce la latencia de respuesta de tu servicio a los usuarios durante los aumentos repentinos de tráfico.
  • Reduce la capacidad de entrega en exceso que se necesita para absorber los aumentos repentinos de la demanda mientras se crean réplicas nuevas.
  • Reduce el tiempo de inactividad de los recursos que ya se implementaron y que esperan a que se inicien los recursos restantes durante los cálculos por lotes.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa the gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando gcloud components update para obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos de este documento.
  • Habilita las APIs de Cloud Logging y Cloud Monitoring.

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el permiso serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén información para otorgar roles.

    Habilitar las API

Requisitos

Para ver las métricas y los paneles de la latencia de inicio de las cargas de trabajo, tu clúster de GKE debe cumplir con los siguientes requisitos:

  • Debes tener la versión 1.31.1-gke.1678000 de GKE o una posterior.
  • Debes configurar la recopilación de métricas del sistema.
  • Debes configurar la recopilación de registros del sistema.
  • Habilita Kube State Metrics con el POD componente en tus clústeres para ver las métricas de Pods y contenedores.

Roles y permisos requeridos

Para obtener los permisos que necesitas para habilitar la generación de registros y acceder a ellos y procesarlos, pídele a tu administrador que te otorgue los siguientes roles de IAM:

  • Visualiza clústeres de GKE, nodos y cargas de trabajo: Visualizador de Kubernetes Engine (roles/container.viewer) en tu proyecto.
  • Accede a las métricas de latencia de inicio y visualiza los paneles: Visualizador de Monitoring (roles/monitoring.viewer) en tu proyecto.
  • Accede a los registros con información de latencia, como los eventos de extracción de imágenes de Kubelet, y visualízalos en el Explorador de registros y Estadísticas de observabilidad: Visualizador de registros (roles/logging.viewer) en tu proyecto.

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Métricas de latencia de inicio

Las métricas de latencia de inicio se incluyen en las métricas del sistema de GKE y se exportan a Cloud Monitoring en el mismo proyecto que el clúster de GKE.

Los nombres de las métricas de Cloud Monitoring en esta tabla deben tener el prefijo kubernetes.io/. Este prefijo se omitió en las entradas de la tabla.

Tipo de métrica (Niveles de jerarquía de recursos)
Nombre visible
Tipo, Unidad
Recursos supervisados
Descripción
Etiquetas
pod/latencies/pod_first_ready  (proyecto)
Latencia de inicio de Pod
GAUGE, Double, s
k8s_pod
La latencia de inicio de extremo a extremo del Pod (desde Pod Created hasta Ready), incluidas las extracciones de imágenes. Se tomaron muestras cada 60 segundos.
node/latencies/startup  (proyecto)
Latencia de inicio del nodo
GAUGE, INT64, s
k8s_node
La latencia de inicio total del nodo, desde la CreationTimestamp de la instancia de GCE hasta Kubernetes node ready por primera vez. Se tomaron muestras cada 60 segundos.

accelerator_family: Una clasificación de nodos basada en aceleradores de hardware: gpu, tpu, cpu.
kube_control_plane_available: Indica si se recibió la solicitud de creación del nodo cuando KCP (plano de control de kube) estaba disponible.
autoscaler/latencies/per_hpa_recommendation_scale_latency_seconds  (proyecto)
Latencia de escalamiento por recomendación de HPA
GAUGE, DOUBLE, s
k8s_scale
Latencia de la recomendación de escalamiento de Horizontal Pod Autoscaler (HPA) (tiempo transcurrido entre la creación de las métricas y la aplicación de la recomendación de escalamiento correspondiente al servidor de la API) para el destino de HPA. Se tomaron muestras cada 60 segundos. Luego del muestreo, los datos no son visibles durante un máximo de 20 segundos.

metric_type: El tipo de fuente de métricas. Debe ser uno de "ContainerResource", "External", "Object", "Pods" o "Resource".

Visualiza el panel de latencia de inicio de las cargas de trabajo

El panel Latencia de inicio de las cargas de trabajo solo está disponible para las implementaciones. Para ver las métricas de latencia de inicio de las implementaciones, realiza los siguientes pasos en la Google Cloud consola:

  1. Ve a la página Cargas de trabajo.

    Ir a Cargas de trabajo

  2. Para abrir la vista Detalles de la implementación, haz clic en el nombre de la carga de trabajo que deseas inspeccionar.

  3. Haz clic en la pestaña Observabilidad.

  4. Selecciona Latencia de inicio en el menú de la izquierda.

Visualiza la distribución de la latencia de inicio de los Pods

La latencia de inicio de los Pods hace referencia a la latencia de inicio total, incluidas las extracciones de imágenes, que mide el tiempo desde el estado Created del Pod hasta el estado Ready. Puedes evaluar la latencia de inicio de los Pods con los siguientes dos gráficos:

  • Gráfico de Distribución de la latencia de inicio de Pods: Este gráfico muestra los percentiles de latencia de inicio de los Pods (percentil cincuenta, percentil noventa y cinco y percentil noventa y nueve) que se calculan en función de las observaciones de los eventos de inicio de Pods durante intervalos de tiempo fijos de 3 horas, por ejemplo, de 12:00 a.m. a 3:00 a.m. y de 3:00 a.m. a 6:00 a.m. Puedes usar este gráfico para los siguientes propósitos:

    • Comprende tu latencia de inicio de Pods de referencia.
    • Identifica los cambios en la latencia de inicio de los Pods a lo largo del tiempo.
    • Correlaciona los cambios en la latencia de inicio de los Pods con eventos recientes, como las implementaciones de cargas de trabajo o los eventos del escalador automático del clúster. Puedes seleccionar los eventos en la lista Anotaciones en la parte superior del panel.
Gráfico de distribución de la latencia de inicio de Pods
Figura: Gráfico de distribución de la latencia de inicio de Pods
  • Gráfico de Recuento de inicio de Pods: Este gráfico muestra el recuento de Pods que se iniciaron durante los intervalos de tiempo seleccionados. Puedes usar este gráfico para los siguientes propósitos:

    • Comprende los tamaños de muestra de Pods que se usan para calcular los percentiles de la distribución de la latencia de inicio de Pods para un intervalo de tiempo determinado.
    • Comprende las causas de los inicios de Pods, como las implementaciones de cargas de trabajo o los eventos de Horizontal Pod Autoscaler. Puedes seleccionar los eventos en la lista Anotaciones en la parte superior del panel.
Gráfico de recuento de inicios de Pods
Figura: Gráfico de recuento de inicio de Pods

Visualiza la latencia de inicio de los Pods individuales

Puedes ver la latencia de inicio de los Pods individuales en el gráfico de cronograma Latencia de inicio de Pod y la lista asociada.

  • Usa el gráfico de cronograma Latencia de inicio de Pod para correlacionar los inicios de Pods individuales con eventos recientes, como los eventos de Horizontal Pod Autoscaler o del escalador automático del clúster. Puedes seleccionar estos eventos en la lista Anotaciones en la parte superior del panel. Este gráfico te ayuda a determinar las posibles causas de los cambios en la latencia de inicio en comparación con otros Pods.
  • Usa la lista Latencia de inicio de Pod para identificar los Pods individuales que tardaron más o menos tiempo en iniciarse. Puedes ordenar la lista por la columna Latencia. Cuando identificas los Pods que tienen la latencia de inicio más alta, puedes solucionar problemas de degradación de la latencia correlacionando los eventos de inicio de Pods con otros eventos recientes.
Gráfico de latencia de inicio de Pod
Figura: Gráfico de latencia de inicio de Pod

Para saber cuándo se creó un Pod individual, consulta el valor en el campo timestamp en un evento de creación de Pod correspondiente. Para ver el campo timestamp, ejecuta la siguiente consulta en el Explorador de registros:

   log_id("cloudaudit.googleapis.com/activity") AND
   protoPayload.methodName="io.k8s.core.v1.pods.create" AND
   resource.labels.project_id=PROJECT_ID AND
   resource.labels.cluster_name=CLUSTER_NAME AND
   resource.labels.location=CLUSTER_LOCATION AND
   protoPayload.response.metadata.namespace=NAMESPACE AND
   protoPayload.response.metadata.name=POD_NAME

Para enumerar todos los eventos de creación de Pods de tu carga de trabajo, usa el siguiente filtro en la consulta anterior: protoPayload.response.metadata.name=~"POD_NAME_PREFIX-[a-f0-9]{7,10}-[a-z0-9]{5}"

Cuando comparas las latencias de los Pods individuales, puedes probar el impacto de varias configuraciones en la latencia de inicio de los Pods y, luego, identificar una configuración óptima según tus requisitos.

Determina la latencia de programación de Pods

La latencia de programación de Pods es la cantidad de tiempo transcurrido entre la creación de un Pod y el momento en que se programó en un nodo. La latencia de programación de Pods contribuye al tiempo de inicio de extremo a extremo de un Pod y se calcula restando las marcas de tiempo de un evento de programación de Pods y una solicitud de creación de Pods.

Puedes encontrar una marca de tiempo de un evento de programación de Pods individual en el campo jsonPayload.eventTime en un evento de programación de Pods correspondiente. Para ver el campo jsonPayload.eventTime, ejecuta la siguiente consulta en el Explorador de registros:

  log_id("events")
  jsonPayload.reason="Scheduled"
  resource.type="k8s_pod"
  resource.labels.project_id=PROJECT_ID
  resource.labels.location=CLUSTER_LOCATION
  resource.labels.cluster_name=CLUSTER_NAME
  resource.labels.namespace_name=NAMESPACE
  resource.labels.pod_name=POD_NAME

Para enumerar todos los eventos de programación de Pods de tu carga de trabajo, usa el siguiente filtro en la consulta anterior: resource.labels.pod_name=~"POD_NAME_PREFIX-[a-f0-9]{7,10}-[a-z0-9]{5}"

Visualiza la latencia de extracción de imágenes

La latencia de extracción de imágenes de contenedor contribuye a la latencia de inicio de Pods en situaciones en las que la imagen aún no está disponible en el nodo o debe actualizarse. Cuando optimizas la latencia de extracción de imágenes, reduces la latencia de inicio de la carga de trabajo durante los eventos de escalamiento horizontal del clúster.

Puedes ver la tabla Eventos de extracción de imágenes de Kubelet para ver cuándo se extrajeron las imágenes de contenedor de la carga de trabajo y cuánto tardó el proceso.

Tabla de eventos de extracción de imágenes de Kubelet
Figura: Tabla de eventos de extracción de imágenes de Kubelet

La latencia de extracción de imágenes está disponible en el campo jsonPayload.message, que contiene un mensaje como el siguiente:

  "Successfully pulled image "gcr.io/example-project/image-name" in 17.093s (33.051s including waiting). Image size: 206980012 bytes."

Visualiza la distribución de la latencia de las recomendaciones de escalamiento de HPA

La latencia de las recomendaciones de escalamiento de Horizontal Pod Autoscaler (HPA) para el destino de HPA es la cantidad de tiempo transcurrido entre la creación de las métricas y la aplicación de la recomendación de escalamiento correspondiente al servidor de la API. Cuando optimizas la latencia de la recomendación de escalamiento de HPA, reduces la latencia de inicio de la carga de trabajo durante los eventos de escalamiento horizontal.

El escalamiento de HPA se puede ver en los siguientes dos gráficos:

  • Gráfico de Distribución de la latencia de las recomendaciones de escalamiento de HPA: Este gráfico muestra los percentiles de latencia de las recomendaciones de escalamiento de HPA (percentil cincuenta, percentil noventa y cinco y percentil noventa y nueve) que se calculan en función de las observaciones de las recomendaciones de escalamiento de HPA durante intervalos de tiempo de 3 horas. Puedes usar este gráfico para los siguientes propósitos:

    • Comprende tu latencia de las recomendaciones de escalamiento de HPA de referencia.
    • Identifica los cambios en la latencia de las recomendaciones de escalamiento de HPA a lo largo del tiempo.
    • Correlaciona los cambios en la latencia de las recomendaciones de escalamiento de HPA con eventos recientes. Puedes seleccionar los eventos en la lista Anotaciones en la parte superior del panel.
Gráfico de distribución de la latencia de las recomendaciones de escalamiento de HPA
Figura: Gráfico de distribución de la latencia de las recomendaciones de escalamiento de HPA
  • Gráfico de Recuento de recomendaciones de escalamiento de HPA: Este gráfico muestra el recuento de recomendaciones de escalamiento de HPA que se observaron durante el intervalo de tiempo seleccionado. Usa el gráfico para las siguientes tareas:

    • Comprende los tamaños de muestra de las recomendaciones de escalamiento de HPA. Las muestras se usan para calcular los percentiles en la distribución de la latencia de las recomendaciones de escalamiento de HPA para un intervalo de tiempo determinado.
    • Correlaciona las recomendaciones de escalamiento de HPA con los eventos de inicio de Pods nuevos y con los eventos de Horizontal Pod Autoscaler. Puedes seleccionar los eventos en la lista Anotaciones en la parte superior del panel.
Gráfico de recuento de recomendaciones de escalamiento de HPA
Figura: Gráfico de recuento de recomendaciones de escalamiento de HPA

Visualiza los problemas de programación de los Pods

Los problemas de programación de Pods pueden afectar la latencia de inicio de extremo a extremo de tu carga de trabajo. Para reducir la latencia de inicio de extremo a extremo de tu carga de trabajo, soluciona los problemas y reduce la cantidad de estos problemas.

Los siguientes son los dos gráficos disponibles para hacer un seguimiento de estos problemas:

  • El gráfico de Pods no programables/pendientes/con errores muestra los recuentos de Pods no programables, pendientes y con errores a lo largo del tiempo.
  • El gráfico de Contenedores con errores de retirada/espera/preparación muestra los recuentos de contenedores en estos estados a lo largo del tiempo.

Visualiza el panel de latencia de inicio de los nodos

Para ver las métricas de latencia de inicio de los nodos, realiza los siguientes pasos en la Google Cloud consola:

  1. Ve a la página Clústeres de Kubernetes.

    Ir a Clústeres de Kubernetes

  2. Para abrir la vista Detalles del clúster, haz clic en el nombre del clúster que deseas inspeccionar.

  3. Haz clic en la pestaña Observabilidad.

  4. En el menú de la izquierda, selecciona Latencia de inicio.

Visualiza la distribución de la latencia de inicio de los nodos

La latencia de inicio de un nodo hace referencia a la latencia de inicio total, que mide el tiempo desde la CreationTimestamp del nodo hasta el estado Kubernetes node ready. La latencia de inicio del nodo se puede ver en los siguientes dos gráficos:

  • Gráfico de Distribución de la latencia de inicio del nodo: Este gráfico muestra los percentiles de latencia de inicio del nodo (percentil cincuenta, percentil noventa y cinco y percentil noventa y nueve) que se calculan en función de las observaciones de los eventos de inicio del nodo durante intervalos de tiempo fijos de 3 horas, por ejemplo, de 12:00 a.m. a 3:00 a.m. y de 3:00 a.m. a 6:00 a.m. Puedes usar este gráfico para los siguientes propósitos:

    • Comprende tu latencia de inicio del nodo de referencia.
    • Identifica los cambios en la latencia de inicio del nodo a lo largo del tiempo.
    • Correlaciona los cambios en la latencia de inicio del nodo con eventos recientes, como las actualizaciones del clúster o las actualizaciones del grupo de nodos. Puedes seleccionar los eventos en la lista Anotaciones en la parte superior del panel.
Gráfico de distribución de latencia de inicio del nodo
Figura: Gráfico de distribución de la latencia de inicio del nodo
  • Gráfico de Recuento de inicio del nodo: Este gráfico muestra el recuento de nodos que se iniciaron durante los intervalos de tiempo seleccionados. Puedes usar el gráfico para los siguientes propósitos:

    • Comprende los tamaños de muestra de nodos que se usan para calcular los percentiles de distribución de la latencia de inicio del nodo para un intervalo de tiempo determinado.
    • Comprende las causas de los inicios de nodos, como las actualizaciones del grupo de nodos o los eventos del escalador automático del clúster. Puedes seleccionar los eventos en la lista Anotaciones en la parte superior del panel.
Gráfico de recuento de inicios de nodos
Figura: Gráfico de recuento de inicio del nodo

Visualiza la latencia de inicio de los nodos individuales

Cuando comparas las latencias de los nodos individuales, puedes probar el impacto de varias configuraciones de nodos en la latencia de inicio del nodo y, luego, identificar una configuración óptima según tus requisitos. Puedes ver la latencia de inicio de los nodos individuales en el gráfico de cronograma Latencia de inicio del nodo y la lista asociada.

  • Usa el gráfico de cronograma Latencia de inicio del nodo para correlacionar los inicios de nodos individuales con eventos recientes, como las actualizaciones del clúster o las actualizaciones del grupo de nodos. Puedes determinar las posibles causas de los cambios en la latencia de inicio en comparación con otros nodos. Puedes seleccionar los eventos en la lista Anotaciones en la parte superior del panel.

  • Usa la lista Latencia de inicio del nodo para identificar los nodos individuales que tardaron más o menos tiempo en iniciarse. Puedes ordenar la lista por la columna Latencia. Cuando identificas los nodos que tienen la latencia de inicio más alta, puedes solucionar problemas de degradación de la latencia correlacionando los eventos de inicio de nodos con otros eventos recientes.

Gráfico de latencia de inicio del nodo
Figura: Gráfico de latencia de inicio del nodo

Para saber cuándo se creó un nodo individual, consulta el valor del campo protoPayload.metadata.creationTimestamp en un evento de creación de nodo correspondiente. Para ver el campo protoPayload.metadata.creationTimestamp, ejecuta la siguiente consulta en el Explorador de registros:

   log_id("cloudaudit.googleapis.com/activity") AND
   protoPayload.methodName="io.k8s.core.v1.nodes.create" AND
   resource.labels.project_id=PROJECT_ID AND
   resource.labels.cluster_name=CLUSTER_NAME AND
   resource.labels.location=CLUSTER_LOCATION AND
   protoPayload.response.metadata.name=NODE_NAME

Visualiza la latencia de inicio en un grupo de nodos

Si tus grupos de nodos tienen diferentes configuraciones, por ejemplo, para ejecutar diferentes cargas de trabajo, es posible que debas supervisar la latencia de inicio del nodo por separado por grupos de nodos. Cuando comparas las latencias de inicio de nodos en tus grupos de nodos, puedes obtener estadísticas sobre cómo la configuración de nodos afecta la latencia de inicio de nodos y, en consecuencia, optimizar la latencia.

De forma predeterminada, el panel Latencia de inicio del nodo muestra la distribución agregada de la latencia de inicio y las latencias de inicio de nodos individuales en todos los grupos de nodos de un clúster. Para ver la latencia de inicio del nodo de un grupo de nodos específico, selecciona el nombre del grupo de nodos con el filtro $node_pool_name_var ubicado en la parte superior del panel.

¿Qué sigue?