En esta página, se describe cómo configurar un clúster de Google Kubernetes Engine (GKE) para enviar un conjunto seleccionado de estado de kube, incluidas las métricas de Pods y Deployments, a Cloud Monitoring con Google Cloud Managed Service para Prometheus. En esta página también se describe cómo se formatean estas métricas cuando se escriben en Monitoring y cómo se consultan las métricas.
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 gcloud CLI. Si ya instalaste gcloud CLI, ejecuta
gcloud components update
para obtener la versión más reciente.
Requisitos
Para recopilar Kube State Metrics, tu clúster de GKE debe cumplir con los siguientes requisitos:
- El clúster debe ejecutar GKE 1.27.2-gke.1200 o una versión posterior. Para los clústeres de GKE Standard a partir de la versión 1.29.2-gke.2000 y los clústeres de GKE Autopilot a partir de la versión 1.27.4-gke.900, el paquete de Kube State Metrics está habilitado de forma predeterminada.
- El clúster debe tener habilitadas las métricas del sistema.
- El clúster debe tener habilitada la recopilación administrada de Google Cloud Managed Service para Prometheus. La recopilación administrada de Google Cloud Managed Service para Prometheus está habilitada de forma predeterminada en los clústeres nuevos.
Configura la recopilación de métricas de estado de kube
Puedes habilitar las métricas de estado de kube con la consola de Google Cloud, gcloud CLI o Terraform:
Console
Puedes habilitar las métricas de estado de kube desde la pestaña Observabilidad para un clúster o una implementación dentro de un clúster. También puedes obtener una vista previa de los gráficos y las métricas disponibles antes de habilitar el paquete de métricas.
En la pestaña Observabilidad de un clúster, puedes filtrar el conjunto de gráficos de las métricas de estado de kube según los siguientes dos elementos:
- Estado de las cargas de trabajo: incluye las métricas de Pods, Deployments, StatefulSets, DaemonSets y recursos de HorizontalPodAutoscaler.
- Almacenamiento > Persistente: Incluye las métricas de volúmenes persistentes y reclamaciones de volúmenes persistentes.
Puedes habilitar uno o ambos conjuntos de métricas.
Para habilitar Kube State Metrics desde la pestaña Observabilidad de un clúster, haz lo siguiente:
-
En la consola de Google Cloud, ve a la página Clústeres de Kubernetes.
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Kubernetes Engine.
Haz clic en el nombre del clúster y, luego, selecciona la pestaña Observabilidad.
Selecciona Estado de las cargas de trabajo o Almacenamiento > Persistente en la lista de funciones.
Haz clic en Habilitar paquete.
Si el paquete de Kube State Metrics ya está habilitado, verás un conjunto de gráficos para Kube State Metrics en su lugar.
Para habilitar Kube State Metrics desde la pestaña Observabilidad de un clúster, haz lo siguiente:
-
En la consola de Google Cloud, ve a la página Cargas de trabajo (Workloads).
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Kubernetes Engine.
Haz clic en el nombre de la implementación y, luego, selecciona la pestaña Observabilidad.
Selecciona Estado de Kube de la lista de atributos.
Haz clic en Habilitar paquete. El paquete está habilitado para todo el clúster.
Si el paquete de métricas de estado de kube ya está habilitado, verás un conjunto de gráficos de métricas de Pods, Deployments y Horizontal Pod Autoscalers.
Para configurar Kube State Metrics desde la pestaña Detalles del clúster, haz lo siguiente:
-
En la consola de Google Cloud, ve a la página Clústeres de Kubernetes.
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Kubernetes Engine.
Haz clic en el nombre del clúster.
En la fila Funciones etiquetada como Cloud Monitoring, haz clic en el ícono Editar.
En el cuadro de diálogo Editar Cloud Monitoring que aparecerá, confirma que esté seleccionada la opción Habilitar Cloud Monitoring.
En el menú desplegable Componentes, selecciona los componentes de estado de kube de los que deseas recopilar métricas.
Haz clic en Aceptar.
Haz clic en Guardar cambios.
gcloud
Actualiza tu clúster para recopilar métricas:
gcloud container clusters update CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--enable-managed-prometheus \
--monitoring=SYSTEM,DAEMONSET,DEPLOYMENT,HPA,POD,STATEFULSET,STORAGE
Reemplaza lo siguiente:
CLUSTER_NAME
: es el nombre del clúster existente.COMPUTE_LOCATION
: la ubicación de Compute Engine del clúster.
El conjunto de valores proporcionados a la marca monitoring
anula cualquier configuración anterior.
Terraform
A fin de configurar la colección de Kube State Metrics 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.
Cuota
Las métricas de estado de kube consumen la cuota de solicitudes de transferencia de series temporales por minuto de la API de Cloud Monitoring. Antes de habilitar las métricas de estado de kube, verifica tu uso máximo reciente de esa cuota. Si tienes muchos clústeres en el mismo proyecto o ya te acercaste al límite de esa cuota, puedes solicitar un aumento del límite de cuota antes de habilitar cualquiera de los paquetes de observabilidad.
Precios
Kube State Metrics usa Google Cloud Managed Service para Prometheus para cargar métricas en Cloud Monitoring. Cloud Monitoring cobra por la transferencia de estas métricas según la cantidad de muestras transferidas. Sin embargo, estas métricas son sin costo para los clústeres registrados que pertenecen a un proyecto que tiene habilitada la edición GKE Enterprise.
Para obtener más información, consulta los Precios de Cloud Monitoring.
Formato de métrica
Todas las métricas de estado de kube de Kubernetes escritas en Cloud Monitoring usan el tipo de recurso prometheus_target
.
Cada nombre de métrica tiene el prefijo prometheus.googleapis.com/
y tiene un sufijo que indica el tipo de métrica de Prometheus, como /gauge
, /histogram
o /counter
. De lo contrario, cada nombre de métrica es idéntico al nombre de la métrica que expone Kubernetes de código abierto.
Exporta desde Cloud Monitoring
Las métricas de estado de kube se pueden exportar desde Cloud Monitoring a través de la API de Cloud Monitoring. Debido a que todas las Kube State Metrics se transfieren a través de Google Cloud Managed Service para Prometheus, Kube State Metrics se pueden consultar a través del lenguaje de consulta de Prometheus (PromQL). También se pueden consultar a través del uso del lenguaje de consulta de Monitoring (MQL).
Consulta métricas
Cuando consultas las métricas de estado de kube, el nombre que usas depende de si usas funciones basadas en PromQL o Cloud Monitoring, como MQL o la interfaz controlada por menú del Explorador de métricas.
En las siguientes tablas de métricas de estado de kube, se muestran dos versiones de cada nombre de métrica:
- Nombre de la métrica de PromQL: Cuando usas PromQL en páginas de Cloud Monitoring de la consola de Google Cloud o en campos de PromQL de la API de Cloud Monitoring, usa el nombre de la métrica PromQL.
- Nombre de la métrica de Cloud Monitoring
Cuando uses otras funciones de Cloud Monitoring, usa el nombre de la métrica de Cloud Monitoring en las tablas que aparecen a continuación. Este nombre debe tener el prefijo
prometheus.googleapis.com/
, que se omitió en las entradas de la tabla.
Métricas de almacenamiento
Los nombres de las métricas de Cloud Monitoring en esta tabla deben tener el prefijo prometheus.googleapis.com/
. Este prefijo se omitió en las entradas de la tabla.
Nombre de la métrica de PromQL Nombre de la métrica de Cloud Monitoring |
|
---|---|
Categoría, tipo, unidad
Recursos supervisados Versión de GKE requerida |
Descripción Etiquetas |
kube_persistentvolume_capacity_bytes kube_persistentvolume_capacity_bytes/gauge
|
|
GAUGE , DOUBLE , By
prometheus_target 1.27.2-gke.1200 |
Capacidad de PersistentVolume en bytes.
Se tomaron muestras cada 30 segundos.persistentvolume : persistentvolume.
|
kube_persistentvolume_claim_ref kube_persistentvolume_claim_ref/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Información sobre la referencia de la reclamación del volumen persistente.
Se tomaron muestras cada 30 segundos.claim_name : claim_name.
name : nombre.
persistentvolume : persistentvolume.
|
kube_persistentvolume_info kube_persistentvolume_info/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Información sobre persistentvolume.
Se tomaron muestras cada 30 segundos.csi_driver : csi_driver.
csi_volume_handle : csi_volume_handle.
local_fs : local_fs.
local_path : local_path.
persistentvolume : persistentvolume.
storageclass : storageclass.
|
kube_persistentvolume_status_phase kube_persistentvolume_status_phase/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
La fase indica si un volumen está disponible, vinculado a una reclamación o liberado por una reclamación.
Se tomaron muestras cada 30 segundos.persistentvolume : persistentvolume.
phase : fase.
|
kube_persistentvolumeclaim_info kube_persistentvolumeclaim_info/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Información sobre la reclamación del volumen persistente.
Se tomaron muestras cada 30 segundos.persistentvolumeclaim : persistentvolumeclaim.
storageclass : storageclass.
volumename : volumename.
|
kube_persistentvolumeclaim_resource_requests_storage_bytes kube_persistentvolumeclaim_resource_requests_storage_bytes/gauge
|
|
GAUGE , DOUBLE , By
prometheus_target 1.27.2-gke.1200 |
La capacidad de almacenamiento solicitada por la reclamación del volumen persistente.
Se tomaron muestras cada 30 segundos.persistentvolumeclaim : persistentvolumeclaim.
|
kube_persistentvolumeclaim_status_phase kube_persistentvolumeclaim_status_phase/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
La fase en la que se encuentra la reclamación de volumen persistente.
Se tomaron muestras cada 30 segundos.persistentvolumeclaim : persistentvolumeclaim.
phase : fase.
|
Para obtener más información, consulta Métricas de PersistentVolume y Métricas de PersistentVolumeClaim.
Métricas del pod
Un Pod es un grupo de uno o más contenedores con una especificación para ejecutar los contenedores, que comparten recursos de almacenamiento y red.
Tabla de métricas del Pod
Las métricas de pod te permiten supervisar y alertar sobre el comportamiento de tus Pods. En la siguiente tabla, se muestran las métricas disponibles en el paquete de Kube State Metrics:
Los nombres de las métricas de Cloud Monitoring en esta tabla deben tener el prefijo prometheus.googleapis.com/
. Este prefijo se omitió en las entradas de la tabla.
Nombre de la métrica de PromQL Nombre de la métrica de Cloud Monitoring |
|
---|---|
Categoría, tipo, unidad
Recursos supervisados Versión de GKE requerida |
Descripción Etiquetas |
kube_pod_container_status_ready kube_pod_container_status_ready/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Describe si la verificación de preparación de contenedores se realizó de forma correcta.
Se tomaron muestras cada 30 segundos.container : contenedor.
pod : Pod.
uid : UID.
|
kube_pod_container_status_waiting_reason kube_pod_status_container_status_waiting_reason/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Describe el motivo por el que el contenedor está en estado de espera.
Se tomaron muestras cada 30 segundos.container : contenedor.
pod : Pod.
reason : motivo.
uid : UID.
|
kube_pod_status_phase kube_pod_status_phase/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
La fase actual de los Pods. Se tomaron muestras cada 30 segundos.phase : fase.
pod : Pod.
uid : UID.
|
kube_pod_status_unschedulable kube_pod_status_unschedulable/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Describe el estado no programable para el Pod.
Se tomaron muestras cada 30 segundos.pod : Pod.
uid : uid.
|
Para obtener más información, consulta Métricas de Pod.
Consultas de muestra para las métricas de Pod
Para determinar si tienes Pods que no se pueden programar, usa la siguiente expresión de PromQL:
sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"})
Para alertar sobre una cantidad de Pods no programables en un espacio de nombres, puedes usar la siguiente expresión de PromQL:
sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"}) > LIMIT
Puedes usar la métrica kube_pod_container_status_waiting_reason
para crear una alerta para un contenedor atascado en un estado de espera específico a través de una expresión PromQL como la siguiente:
max_over_time(kube_pod_container_status_waiting_reason{reason="REASON", cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1
El valor de REASON especifica el estado de espera del contenedor, por ejemplo:
CrashLoopBackOff
ImagePullBackOff
ContainerCreating
Para crear una alerta para un contenedor atascado en cualquiera de los estados de espera, usa la siguiente expresión PromQL:
max_over_time(kube_pod_container_status_waiting_reason{cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1
Para determinar cuántos contenedores no pasan las verificaciones de preparación, usa la siguiente expresión de PromQL:
sum(kube_pod_container_status_ready) by (pod, container) == 0
Algunas de las expresiones de consulta y alerta de esta sección se adaptaron del archivo kubernetes-apps.yaml
en el repositorio de gráficos de Kubernetes Helm para la comunidad de Prometheus en GitHub.
Guías interactivas
Las métricas de estado de Kube también se usan en las guías interactivas de GKE para solucionar problemas de Pods no programables o con bucle de fallas. Para obtener más información sobre estos modos de falla, consulta los siguientes documentos de solución de problemas:
Sin el paquete Kube State Metrics habilitado, el método principal para detectar problemas de programación de Pods es consultar los eventos de registro “Error de programación”. Después de habilitar el paquete Kube State Metrics, puedes usar la métrica kube_pod_status_unschedulable
, que tiene el mismo propósito, pero es más fácil de agregar y representar. Si usas la métrica, puedes ver cuántos Pods no son programables y cuándo comenzó el problema.
Del mismo modo, la métrica del sistema de GKE kubernetes.io/container/restart_count
puede ayudarte a detectar Pods en bucle de falla. La métrica kube_pod_container_status_waiting_reason
también enumera los Pods en bucle de fallas y también te permite determinar si los Pods están atascados en estados de espera distintos de CrashLookBackOff
, como ImagePullBackOff
y ContainerCreating
.
Para explorar las guías interactivas, haz lo siguiente:
-
En la consola de Google Cloud, ve a la página Paneles.
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.
- Para filtrar la lista del panel, haz clic en la categoría GCP.
- Haz clic en el nombre de un panel de "Guía interactiva de GKE" en la lista.
Métricas de implementación
Un Deployment es un controlador que actualiza el estado de recursos como los Pods para administrar eventos como lanzamientos y desactivaciones.
Tabla de métricas de implementación
Las métricas de Deployment te permiten supervisar y alertar sobre el comportamiento del controlador. En la siguiente tabla, se muestran las métricas disponibles en el paquete de Kube State Metrics:
Los nombres de las métricas de Cloud Monitoring en esta tabla deben tener el prefijo prometheus.googleapis.com/
. Este prefijo se omitió en las entradas de la tabla.
Nombre de la métrica de PromQL Nombre de la métrica de Cloud Monitoring |
|
---|---|
Categoría, tipo, unidad
Recursos supervisados Versión de GKE requerida |
Descripción Etiquetas |
kube_deployment_spec_replicas kube_deployment_spec_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Cantidad de Pods deseados para una implementación. Se tomaron muestras cada 30 segundos.deployment : implementación.
|
kube_deployment_status_replicas_available kube_deployment_status_replicas_available/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
La cantidad de réplicas disponibles por implementación. Se tomaron muestras cada 30 segundos.deployment : implementación.
|
kube_deployment_status_replicas_updated kube_deployment_status_replicas_updated/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
La cantidad de réplicas actualizadas por implementación. Se tomaron muestras cada 30 segundos.deployment : implementación.
|
Para obtener más información, consulta Métricas de implementación.
Consultas de muestra para las métricas de Deployment
Para crear gráficos y políticas de alertas para implementaciones individuales, filtra las métricas de implementación por clúster, espacio de nombres y el nombre del Deployment.
Por ejemplo, para comparar la cantidad de réplicas disponibles con la cantidad esperada de réplicas en una sola implementación, puedes usar las siguientes consultas de PromQL para trazar ambas métricas en un solo gráfico:
kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
Para alertar sobre una implementación fallida o detenida, puedes usar la siguiente expresión de PromQL:
( kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"} > kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"} ) and ( changes(kube_deployment_status_replicas_updated{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}[10m]) == 0 )
Algunas de las expresiones de consulta y alerta de esta sección se adaptaron del archivo kubernetes-apps.yaml
en el repositorio de gráficos de Kubernetes Helm para la comunidad de Prometheus en GitHub.
Métricas de StatefulSet
Un StatefulSet es un controlador que administra la implementación y el escalamiento de un conjunto de Pods para aplicaciones con estado. Este controlador administra el orden y la singularidad de los Pods.
Tabla de métricas de StatefulSet
Las métricas de StatefulSet te permiten supervisar y alertar sobre el comportamiento del controlador. En la siguiente tabla, se muestran las métricas disponibles en el paquete de Kube State Metrics:
Los nombres de las métricas de Cloud Monitoring en esta tabla deben tener el prefijo prometheus.googleapis.com/
. Este prefijo se omitió en las entradas de la tabla.
Nombre de la métrica de PromQL Nombre de la métrica de Cloud Monitoring |
|
---|---|
Categoría, tipo, unidad
Recursos supervisados Versión de GKE requerida |
Descripción Etiquetas |
kube_statefulset_replicas kube_statefulset_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Cantidad de Pods deseados para StatefulSet. Se tomaron muestras cada 30 segundos.statefulset : statefulset.
|
kube_statefulset_status_replicas_ready kube_statefulset_status_replicas_ready/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
La cantidad de réplicas listas por StatefulSet. Se tomaron muestras cada 30 segundos.statefulset : statefulset.
|
kube_statefulset_status_replicas_updated kube_statefulset_status_replicas_updated/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
La cantidad de réplicas actualizadas por StatefulSet. Se tomaron muestras cada 30 segundos.statefulset : statefulset.
|
Para obtener más información, consulta Métricas de StatefulSet.
Consultas de muestra para las métricas de StatefulSet
Para crear gráficos y políticas de alertas para StatefulSets individuales, filtra las métricas de StatefulSet por clúster, espacio de nombres y el nombre del StatefulSet.
Por ejemplo, para comparar la cantidad de réplicas disponibles con la cantidad esperada de réplicas en un solo StatefulSet, puedes usar las siguientes consultas de PromQL para trazar ambas métricas en un solo gráfico:
kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
Para alertar sobre un lanzamiento de StatefulSet fallido o detenido, puedes usar la siguiente expresión de PromQL:
( kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"} > kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"} ) and ( changes(kube_statefulset_status_replicas_updated{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}[10m]) == 0 )
Algunas de las expresiones de consulta y alerta de esta sección se adaptaron del archivo kubernetes-apps.yaml
en el repositorio de gráficos de Kubernetes Helm para la comunidad de Prometheus en GitHub.
Métricas de DaemonSet
Un DaemonSet es un controlador que garantiza que un conjunto de nodos ejecute una copia de un Pod. Por ejemplo, a medida que se agregan nodos a un clúster, el DaemonSet agrega pods a los nodos. Este controlador es útil para garantizar que ciertos procesos se ejecuten en todos los nodos.
Tabla de métricas de DaemonSet
Las métricas de DaemonSet te permiten supervisar y alertar sobre el comportamiento del controlador. En la siguiente tabla, se muestran las métricas disponibles en el paquete de Kube State Metrics:
Los nombres de las métricas de Cloud Monitoring en esta tabla deben tener el prefijo prometheus.googleapis.com/
. Este prefijo se omitió en las entradas de la tabla.
Nombre de la métrica de PromQL Nombre de la métrica de Cloud Monitoring |
|
---|---|
Categoría, tipo, unidad
Recursos supervisados Versión de GKE requerida |
Descripción Etiquetas |
kube_daemonset_status_desired_number_scheduled kube_daemonset_status_desired_number_scheduled/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
La cantidad de nodos que deberían ejecutar el Pod de daemon.
Se tomaron muestras cada 30 segundos.daemonset : daemonset.
|
kube_daemonset_status_number_misscheduled kube_daemonset_status_number_misscheduled/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Es la cantidad de nodos que ejecutan un Pod de daemon, pero no deberían hacerlo. Se tomaron muestras cada 30 segundos.daemonset : daemonset.
|
kube_daemonset_status_number_ready kube_daemonset_status_number_ready/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
La cantidad de nodos que deben ejecutar el Pod de daemon y que deben tener uno o más Pod de daemon en ejecución y listos. Se tomaron muestras cada 30 segundos.daemonset : daemonset.
|
kube_daemonset_status_updated_number_scheduled kube_daemonset_status_updated_number_scheduled/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
La cantidad de nodos que ejecutan el Pod de daemon actualizado.
Se tomaron muestras cada 30 segundos.daemonset : daemonset.
|
Para obtener más información, consulta Métricas de DaemonSet.
Consultas de muestra para las métricas de DaemonSet
Para crear gráficos y políticas de alertas para DaemonSets individuales, filtra las métricas de daemonset por clúster, espacio de nombres y el nombre del DaemonSet.
Por ejemplo, para comparar la cantidad de réplicas disponibles con la cantidad esperada de réplicas en un solo DaemonSet, puedes usar las siguientes consultas de PromQL para trazar ambas métricas en un solo gráfico:
kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonsetset=DAEMONSET"}
kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset=DAEMONSET"}
Para alertar sobre un lanzamiento de DaemonSet fallida o detenida, puedes usar la siguiente expresión de PromQL:
( ( kube_daemonset_status_number_misscheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"} != 0 ) or ( kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"} != kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"} ) ) and ( changes(kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}[5m]) == 0 )
Algunas de las expresiones de consulta y alerta de esta sección se adaptaron del archivo kubernetes-apps.yaml
en el repositorio de gráficos de Kubernetes Helm para la comunidad de Prometheus en GitHub.
Métricas de HorizontalPodAutoscaler
Un HorizontalPodAutoscaler (HPA) es un controlador que cambia de forma periódica la cantidad de pods en una carga de trabajo, como una implementación o un StatefulSet, en respuesta a alguna métrica, como el uso de CPU o memoria. Cambiar la cantidad de pods disponibles para una carga de trabajo mantiene la carga de trabajo responsiva, pero eficiente.
Para obtener más información sobre los HPA, consulta Visualiza detalles sobre un escalador automático horizontal de Pods.
Tabla de métricas de HPA
Las métricas de HorizontalPodAutoscaler te permiten supervisar y alertar sobre el comportamiento del controlador. En la siguiente tabla, se muestran las métricas disponibles en el paquete de Kube State Metrics:
Los nombres de las métricas de Cloud Monitoring en esta tabla deben tener el prefijo prometheus.googleapis.com/
. Este prefijo se omitió en las entradas de la tabla.
Nombre de la métrica de PromQL Nombre de la métrica de Cloud Monitoring |
|
---|---|
Categoría, tipo, unidad
Recursos supervisados Versión de GKE requerida |
Descripción Etiquetas |
kube_horizontalpodautoscaler_spec_max_replicas kube_horizontalpodautoscaler_spec_max_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
El límite superior de la cantidad de Pods que puede establecer el escalador automático no puede ser menor que el de MinReplicas.
Se tomaron muestras cada 30 segundos.horizontalpodautoscaler : horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_spec_min_replicas kube_horizontalpodautoscaler_spec_min_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Límite más bajo para la cantidad de Pods que puede establecer el escalador automático, con 1 como configuración predeterminada.
Se tomaron muestras cada 30 segundos.horizontalpodautoscaler : horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_spec_target_metric kube_horizontalpodautoscaler_spec_target_metric/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Las especificaciones de métrica que se usan en este escalador automático cuando se calcula el recuento de réplicas deseado.
Se tomaron muestras cada 30 segundos.horizontalpodautoscaler : horizontalpodautoscaler.
metric_name : metric_name.
metric_target_type : metric_target_type.
|
kube_horizontalpodautoscaler_status_condition kube_horizontalpodautoscaler_status_condition/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
La condición de este escalador automático.
Se tomaron muestras cada 30 segundos.condition : condición.
horizontalpodautoscaler : horizontalpodautoscaler.
namespace : namespace.
status : estado.
|
kube_horizontalpodautoscaler_status_current_replicas kube_horizontalpodautoscaler_status_status_current_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Cantidad actual de réplicas de Pods que administra este escalador automático.
Se tomaron muestras cada 30 segundos.horizontalpodautoscaler : horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_status_desired_replicas kube_horizontalpodautoscaler_status_desired_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Cantidad deseada de réplicas de Pods que administra este escalador automático.
Se tomaron muestras cada 30 segundos.horizontalpodautoscaler : horizontalpodautoscaler.
|
Para obtener más información, consulta Métricas del Horizontal Pod Autoscaler.
Consultas de muestra para las métricas de HPA
Por ejemplo, para determinar si el HPA se está acercando a la cantidad máxima de réplicas, puedes trazar la siguiente proporción:
kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"} / kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}
Cuando el HPA se ejecuta con la cantidad máxima de réplicas, es posible que desees aumentar la especificación para la cantidad máxima de Pods. Puedes usar la siguiente expresión de PromQL para crear una alerta que te notifique sobre este caso:
kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"} == kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}
También puedes comparar los valores de las métricas kube_horizontalpodautoscaler_status_current_replicas
y kube_horizontalpodautoscaler_status_desired_replicas
para determinar si hay una diferencia entre la cantidad actual y la necesaria de réplicas. Una diferencia puede indicar una restricción de recursos en el clúster. La siguiente expresión de PromQL busca diferencias entre la cantidad actual de réplicas y las cantidades necesarias, mínimas y máximas de réplicas, así como los cambios en la cantidad actual de réplicas:
(kube_horizontalpodautoscaler_status_desired_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"} != kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}) and (kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"} > kube_horizontalpodautoscaler_spec_min_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}) and (kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"} < kube_horizontalpodautoscaler_spec_max_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}) and changes(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}[15m]) == 0
Las etiquetas condition
y status
en la métrica kube_horizontalpodautoscaler_status_condition
también pueden ayudarte a detectar cuándo los HPAs se encuentran con varios modos de falla. Por ejemplo:
- La condición
ScalingLimited
y el estado detrue
indican que el HPA está limitado por su recuento mínimo o máximo de réplicas:kube_horizontalpodautoscaler_status_condition{status="true", condition="ScalingLimited"} == 1
La condición
AbleToScale
y un estadofalse
indican que el HPA tiene problemas para recuperar o actualizar escalas:kube_horizontalpodautoscaler_status_condition{status="false", condition="AbleToScale"} == 1
La condición
ScalingActive
y un estado defalse
indican que el HPA está inhabilitado o no puede calcular una escala nueva:kube_horizontalpodautoscaler_status_condition{status="false", condition="ScalingActive"} == 1
Algunas de las expresiones de consulta y alerta de esta sección se adaptaron del archivo kubernetes-apps.yaml
en el repositorio de gráficos de Kubernetes Helm para la comunidad de Prometheus en GitHub.