Administra métricas de GKE

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Google Kubernetes Engine (GKE) facilita el envío de métricas a Cloud Monitoring. Cuando estén en Cloud Monitoring, las métricas pueden propagar paneles personalizados, generar alertas, crear objetivos de nivel de servicio, o los servicios de supervisión de terceros los recuperan mediante la API de Monitoring.

GKE proporciona varias fuentes de métricas:

  • Métricas del sistema: métricas de componentes esenciales del sistema, que describen recursos de bajo nivel, como CPU, memoria y almacenamiento.
  • El servicio administrado para Prometheus: te permite supervisar y crear alertas en tus cargas de trabajo mediante Prometheus, sin tener que administrar y operar de forma manual Prometheus a gran escala.
  • Métricas del plano de control: métricas exportadas desde ciertos componentes del plano de control como el servidor de la API y el programador.
  • Métricas de cargas de trabajo: métricas expuestas por cualquier carga de trabajo de GKE (como un CronJob o una implementación para una aplicación).

Métricas del sistema

De forma predeterminada, GKE recopila ciertas métricas emitidas por los componentes del sistema cuando se crea un clúster.

Tienes la opción de enviar métricas desde tu clúster de GKE a Cloud Monitoring. Si eliges enviar métricas a Cloud Monitoring, debes enviar métricas del sistema.

Todas las métricas del sistema de GKE se transfieren a Cloud Monitoring con el prefijo kubernetes.io.

Precios

Cloud Monitoring no cobra por la transferencia de las métricas del sistema de GKE. Para obtener más información, consulta los Precios de Cloud Monitoring.

Configura la recopilación de métricas del sistema

Para habilitar la recopilación de métricas del sistema, pasa el valor SYSTEM a la marca --monitoring de los comandos gcloud container clusters create o gcloud container clusters update.

Para inhabilitar la recopilación de métricas del sistema, usa el valor NONE en la marca --monitoring. Si la recopilación de métricas del sistema está inhabilitada, la información básica, como el uso de CPU, memoria y disco, no está disponible para un clúster en la pestaña Observabilidad o la sección de GKE de la consola de Google Cloud. Además, el panel de GKE de Cloud Monitoring no contiene información sobre el clúster.

Consulta Configura Cloud Operations para GKE a fin de obtener más detalles sobre la integración de Cloud Monitoring con GKE.

A fin de configurar la recopilación de métricas del sistema mediante Terraform, consulta el bloque monitoring_config en el registro de Terraform para google_container_cluster. Para obtener información general sobre el uso de Google Cloud con Terraform, consulta Terraform con Google Cloud.

Lista de métricas del sistema

Las métricas del sistema incluyen métricas de componentes esenciales del sistema que son importantes para la funcionalidad principal de Kubernetes. Para obtener una lista de estas métricas, consulta Métricas del sistema de GKE.

Soluciona problemas del sistema de métricas

Si las métricas del sistema no están disponibles en Cloud Monitoring como se espera, aquí hay algunos pasos que puedes seguir para solucionar el problema.

Confirma que el agente de métricas tenga suficiente memoria

En la mayoría de los casos, la asignación predeterminada de recursos al agente de métricas de GKE es suficiente. Sin embargo, si el DaemonSet falla de forma repetida, puedes verificar el motivo de la finalización con las siguientes instrucciones:

  1. Obtén los nombres de los Pods del agente de métricas de GKE:

    kubectl get pods -n kube-system -l component=gke-metrics-agent
    

    Busca el Pod con el estado CrashLoopBackOff.

    El resultado es similar a este:

    NAME                    READY STATUS           RESTARTS AGE
    gke-metrics-agent-5857x 0/1   CrashLoopBackOff 6        12m
    
  2. Describe el Pod que tiene el estado CrashLoopBackOff:

    kubectl describe pod POD_NAME -n kube-system
    

    Reemplaza POD_NAME por el nombre del Pod del paso anterior.

    Si el motivo de finalización del Pod es OOMKilled, el agente necesita memoria adicional.

    El resultado es similar a este:

      containerStatuses:
      ...
      lastState:
        terminated:
          ...
          exitCode: 1
          finishedAt: "2021-11-22T23:36:32Z"
          reason: OOMKilled
          startedAt: "2021-11-22T23:35:54Z"
    
  3. Agrega una etiqueta de nodo al nodo con el agente de métricas con errores. Puedes usar una etiqueta de nodo persistente o temporal. Te recomendamos que agregues 20 MB adicionales. Si el agente falla, puedes volver a ejecutar este comando y reemplazar la etiqueta del nodo por una que solicite una mayor cantidad de memoria adicional.

    Para actualizar un grupo de nodos con una etiqueta persistente, ejecuta el siguiente comando:

    gcloud container node-pools update NODEPOOL_NAME \
     --cluster=CLUSTER_NAME \
     --node-labels=ADDITIONAL_MEMORY_NODE_LABEL \
     --zone ZONE
    

    Reemplaza lo siguiente:

    • NODEPOOL_NAME: el nombre del grupo de nodos
    • CLUSTER_NAME: es el nombre del clúster existente.
    • ADDITIONAL_MEMORY_NODE_LABEL: Una de las etiquetas de nodo de memoria adicionales; usa una de las siguientes opciones:
      • Para agregar 10 MB, ejecuta este comando: cloud.google.com/gke-metrics-agent-scaling-level=10
      • Para agregar 20 MB, ejecuta este comando: cloud.google.com/gke-metrics-agent-scaling-level=20
      • Para agregar 50 MB, ejecuta este comando: cloud.google.com/gke-metrics-agent-scaling-level=50
      • Para agregar 100 MB: cloud.google.com/gke-metrics-agent-scaling-level=100
      • Para agregar 200 MB: cloud.google.com/gke-metrics-agent-scaling-level=200
      • Para agregar 500 MB, ejecuta este comando: cloud.google.com/gke-metrics-agent-scaling-level=500
    • ZONE: la zona en la que se ejecuta el clúster.

    Como alternativa, puedes agregar una etiqueta de nodo temporal que no persistirá después de una actualización mediante el siguiente comando:

    kubectl label node/NODE_NAME \
    ADDITIONAL_MEMORY_NODE_LABEL --overwrite
    

    Reemplaza lo siguiente:

    • NODE_NAME por el nombre del nodo del agente de métricas afectado.
    • ADDITIONAL_MEMORY_NODE_LABEL: es una de las etiquetas de nodo de memoria adicionales; usa uno de los valores del ejemplo anterior.

Métricas del plano de control

Puedes configurar un clúster de G K E para enviar ciertas métricas emitidas por el servidor de la API de Kubernetes, Scheduler y el Administrador de controladores a Cloud Monitoring.

Requisitos

Para enviar métricas emitidas por los componentes del plano de control de Kubernetes a Cloud Monitoring, se requiere la versión 1.22.13 o posterior del plano de control de G K E y se requiere que la recopilación de métricas del sistema esté habilitada.

Configura la recopilación de métricas del plano de control

Para habilitar las métricas del plano de control de Kubernetes en un clúster de G K E existente, sigue estos pasos:

Consola

  1. En la consola de Google Cloud, ve a la lista de clústeres de GKE.

    Ir a Clústeres de Kubernetes

  2. Haz clic en el nombre del clúster.

  3. En la fila etiquetada Cloud Monitoring, haz clic en el ícono Editar.

  4. En el cuadro de diálogo Editar Cloud Monitoring que aparecerá, confirma que esté seleccionada la opción Habilitar Cloud Monitoring.

  5. En el menú desplegable Componentes, selecciona los componentes del plano de control del que deseas recopilar métricas: Servidor de la API, Programador o Administrador de controladores.

  6. Haga clic en OK.

  7. Haz clic en Guardar cambios.

gcloud

  1. Abre una ventana de la terminal con el SDK de Google Cloud y Google Cloud CLI instalada. Una forma de hacerlo es mediante Cloud Shell:

  2. En la consola de Google Cloud, activa Cloud Shell.

    Activar Cloud Shell

    En la parte inferior de la consola de Google Cloud, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.

  3. Pasa uno o más de los valores API_SERVER, SCHEDULER o CONTROLLER_MANAGER a la marca --monitoring de los comandos gcloud container clusters create o gcloud container clusters update.

    Por ejemplo, para recopilar métricas del servidor de la API, del programador y del administrador de controladores, ejecuta este comando:

    gcloud container clusters update [CLUSTER_ID] \
      --zone=[ZONE] \
      --project=[PROJECT_ID] \
      --monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER
    

Terraform

Usa métricas del plano de control

Consulta las siguientes secciones para usar las métricas del plano de control:

Paneles para visualizar las métricas del plano de control disponibles en la pestaña Observabilidad de GKE en la consola de Google Cloud. Para obtener información sobre estos paneles, consulta Visualiza métricas de observabilidad.

Precios

Las métricas del plano de control de G K E usan Google Cloud Managed Service para Prometheus a fin de transferir métricas a Cloud Monitoring. Cloud Monitoring cobra por la transferencia de las métricas del plano de control de G K E según la cantidad de muestras transferidas. Para obtener más información, consulta los Precios de Cloud Monitoring.

Información sobre tu factura de Monitoring

Para identificar qué métricas del plano de control tienen la mayor cantidad de muestras que se transfieren, usa la métrica monitoring.googleapis.com/collection/attribution/write_sample_count:

  1. En la consola de Google Cloud, selecciona Monitoring:

    Ir a Monitoring

  2. En el panel de navegación de Monitoring, haz clic en Explorador de métricas (Metrics Explorer).

  3. En el campo Métrica, selecciona monitoring.googleapis.com/collection/attribution/write_sample_count.

  4. Haz clic en Agregar filtro.

  5. En el campo Etiqueta, selecciona attribution_dimension.

  6. En el campo Comparación, selecciona = (equals).

  7. En el campo Valor, ingresa cluster.

  8. Haga clic en Listo.

  9. De manera opcional, filtra solo ciertas métricas. En particular, dado que todas las métricas del servidor de la API incluyen “apiserver” como parte del nombre de la métrica, y debido a que todas las métricas del programador incluyen “scheduler” como parte del nombre de la métrica, puedes restringir las métricas que contienen esas strings:

    • Haz clic en Agregar filtro.

    • En el campo Etiqueta, selecciona metric_type.

    • En el campo Comparación, selecciona =~ (equals regex).

    • En el campo Valor, ingresa .*apiserver.* o .*scheduler.*.

    • Haga clic en Listo.

  10. De manera opcional, agrupa la cantidad de muestras transferidas por región o proyecto de G K E:

    • Haz clic en Agrupar por.

    • Asegúrate de que esté seleccionado metric_type.

    • Para agrupar por región de GKE, selecciona ubicación.

    • Para agrupar por proyecto, selecciona project_id.

    • Haga clic en OK.

  11. De manera opcional, agrupa la cantidad de muestras transferidas por nombre del clúster de G K E:

    • Haz clic en Agrupar por.

    • Para agrupar por nombre del clúster de G K E, asegúrate de que estén seleccionados attribution_dimension y attribution_id.

    • Haga clic en OK.

  12. Para ordenar la lista de métricas en orden descendente, haz clic en el encabezado Valor de la columna sobre la lista de métricas.

En estos pasos, se muestran las métricas con la tasa más alta de muestras transferidas a Cloud Monitoring. Dado que las métricas del plano de control de G K E se cobran por la cantidad de muestras transferidas, presta atención a las métricas con la tasa más alta de muestras transferidas.

Cuota

Las métricas del plano de control consumen la cuota de “solicitudes de transferencia de series temporales por minuto” de la API de Cloud Monitoring. Antes de habilitar las métricas del plano de control, verifica el uso máximo reciente de esa cuota. Si tienes muchos clústeres en el mismo proyecto o ya te acercas al límite de esa cuota, puedes solicitar un aumento del límite de cuota antes de habilitar las métricas del plano de control.

Otras métricas

Además de las métricas del sistema y las métricas del plano de control en este documento, las métricas de Istio también están disponibles para los clústeres de G K E.