Métricas personalizadas y externas para el ajuste de escala automático de cargas de trabajo

En esta página, se analizan las métricas personalizadas y externas, que el escalador automático de pods horizontal puede usar para aumentar o disminuir de forma automática el número de réplicas de una carga de trabajo determinada.

A diferencia del escalador automático de pods vertical, el escalador automático de pods horizontal no modifica las solicitudes configuradas de la carga de trabajo. El escalador automático de pods horizontal escala solo el número de réplicas.

Las métricas personalizadas y externas permiten que las cargas de trabajo se adapten a las condiciones, más allá de la carga de trabajo en sí. Considera una aplicación que extrae tareas de una cola y las completa. Es posible que tu aplicación tenga un objetivo de nivel de servicio (SLO) por tiempo para procesar una tarea o por la cantidad de tareas pendientes. Si la cola aumenta, más réplicas de la carga de trabajo podrían cumplir con el SLO de tu carga de trabajo. Si la cola está vacía o disminuye más rápido de lo esperado, es posible que ahorres dinero con la ejecución de menos réplicas, a la vez que cumples con el SLO de tu carga de trabajo.

Las métricas personalizadas y las métricas externas son diferentes entre sí:

  • Se informa una métrica personalizada de tu aplicación que se ejecuta en Kubernetes. Para obtener más información, consulta la página sobre métricas personalizadas en este tema.
  • Se informa una métrica externa de una aplicación o servicio que no se ejecuta en tu clúster, pero cuyo rendimiento afecta a tu aplicación de Kubernetes. Para obtener información, la métrica podría informarse desde Cloud Monitoring o Pub/Sub.

Las métricas personalizadas como las externas también funcionan en la otra dirección. Por ejemplo, una cantidad baja de tareas en una cola puede indicar que la aplicación tiene un buen rendimiento y puede ser apta para reducir el ajuste de escala automático.

Para obtener más información, consulta la sección Métricas personalizadas o Métricas externas en este tema.

Métricas personalizadas

Tu aplicación puede informar una métrica personalizada a Cloud Monitoring. Puedes configurar Kubernetes para que responda a estas métricas y escale tu carga de trabajo de manera automática. Por ejemplo, puedes escalar tu aplicación en función de métricas como consultas por segundo, escrituras por segundo, rendimiento de la red, latencia cuando se comunica con una aplicación diferente y demás métricas que tengan sentido para tu carga de trabajo.

Se puede seleccionar una métrica personalizada para cualquiera de los siguientes elementos:

  • Un nodo en particular, un pod o cualquier objeto de Kubernetes de cualquier tipo, incluida una CustomResourceDefinition (CRD).
  • El valor promedio de una métrica que informan todos los pods en una implementación

Puedes filtrar una métrica personalizada por etiqueta y agregar un campo selector establecido en la clave y el valor de la etiqueta. Por ejemplo, puedes configurar selector: "environment=prod" para que solo agregue valores de métricas con la etiqueta environment=prod. El selector puede ser una combinación de objeto binario de varias expresiones de etiquetas. Para obtener más información, consulta Etiquetas de métricas basadas en registros en la documentación de Monitoring.

Antes de que puedas usar métricas personalizadas, debes habilitar Monitoring en tu proyecto de Google Cloud e instalar el adaptador de Stackdriver en tu clúster. Después de que las métricas personalizadas se exportan a Monitoring, pueden activar eventos de ajuste de escala automático mediante el escalador automático horizontal de pods para cambiar la forma de la carga de trabajo.

Las métricas personalizadas deben exportarse desde tu aplicación en un formato específico. La IU de Monitoring incluye una herramienta de creación automática de métricas para ayudarte a crear métricas personalizadas de forma automática. Si usas la herramienta de creación automática para crear métricas personalizadas, Monitoring las detecta automáticamente.

Para obtener más detalles, consulta el instructivo Realiza un ajuste de escala automático de implementaciones con métricas personalizadas.

Métricas externas

Si necesitas escalar tu carga de trabajo en función del rendimiento de una aplicación o servicio fuera de Kubernetes, puedes configurar una métrica externa. Por ejemplo, es posible que debas aumentar la capacidad de tu aplicación para transferir mensajes de Pub/Sub si la cantidad de mensajes no entregados tiene una tendencia creciente.

La aplicación externa debe exportar la métrica a una instancia de Monitoring a la que el clúster pueda acceder. La tendencia de cada métrica a lo largo del tiempo hace que el escalador automático horizontal de pod cambie la forma de la carga de trabajo automáticamente.

Para obtener más detalles, consulta el instructivo Cómo realizar el ajuste de escala automático de implementaciones con métricas externas.

Importa métricas

Para importar métricas a Monitoring, puedes seguir estos pasos:

  • Exporta métricas desde la aplicación con la API de Cloud Monitoring. O
  • Configurar la aplicación para que emita métricas en formato Prometheus. A continuación, ejecuta el adaptador Prometheus-to-Stackdriver. Este es un pequeño contenedor de archivo adicional de código abierto que extrae las métricas, las traduce al formato de Monitoring y las envía a la API de Monitoring.

Para obtener más información, consulta cómo crear métricas en la documentación de Monitoring.

¿Qué sigue?