logoImagina
iconCurso
Te recomendamos nuestro curso de Kubernetes
Descubre el curso de Kubernetes
Ir al curso

Cómo Configurar el Autoescalado (HPA) de Kubernetes

iconImage
Escrito por Equipo de Imagina
Actualizado el 18-06-2024
Duración: 15 min

En el mundo de la tecnología de la información, mantener aplicaciones altamente disponibles y eficientes se ha convertido en una necesidad primordial. Aquí es donde Kubernetes y su Horizontal Pod Autoscaler (HPA) juegan un papel crucial. El HPA permite a las aplicaciones alojadas en Kubernetes adaptarse dinámicamente a las fluctuaciones de la demanda, asegurando un uso óptimo de los recursos disponibles. En este artículo, exploraremos cómo configurar el HPA, desglosando su definición, funcionamiento y beneficios.

Programadora Usando HPA en Kubernetes

Qué es el Autoscaling Horizontal de Pods (HPA)

El Autoscaling Horizontal de Pods (HPA) es una funcionalidad de Kubernetes que ajusta automáticamente el número de pods en un deployment, replica set, o stateful set basándose en la utilización actual de CPU u otras métricas personalizadas. Esta capacidad asegura que las aplicaciones puedan manejar incrementos en la carga de trabajo sin la necesidad de intervención manual, manteniendo al mismo tiempo un uso eficiente de los recursos.

Para utilizar el HPA, es esencial tener un entendimiento básico de los componentes de Kubernetes, como pods, deployments, y metrics server, este último proporciona los datos necesarios para que el HPA tome decisiones de escalado.

¿Cómo funciona el HPA?

El funcionamiento del HPA se puede resumir en tres pasos:

  1. Monitoreo: El HPA recopila datos de utilización de recursos (por defecto, CPU y memoria) de los pods.
  2. Decisión: Compara la utilización actual con los umbrales definidos en la configuración del HPA.
  3. Ejecución: Si la utilización supera el umbral, aumenta el número de pods; si está por debajo, reduce la cantidad.

Para configurar el HPA, se utiliza el comando kubectl autoscale, especificando el deployment objetivo, el umbral de CPU deseado, y el número mínimo y máximo de pods. Alternativamente, se puede definir el HPA mediante un archivo YAML.

1kubectl autoscale deployment <nombre-deployment> --cpu-percent=50 --min=1 --max=10

Este comando creará un HPA que ajustará el número de pods en el deployment <nombre-deployment> para mantener la utilización de CPU cerca del 50%, permitiendo que el número de pods fluctúe entre 1 y 10 según sea necesario.

Beneficios del uso de HPA

Implementar el HPA en tus aplicaciones Kubernetes ofrece múltiples beneficios:

  • Escalabilidad eficiente: Permite a las aplicaciones responder rápidamente a los cambios en la demanda sin sobreprovisionar recursos.
  • Costo-efectividad: Al ajustar automáticamente la cantidad de recursos utilizados, se pueden reducir los costos operativos.
  • Mejora de la disponibilidad: Asegura que las aplicaciones permanezcan disponibles y respondan incluso durante picos de demanda inesperados.
  • Automatización: Reduce la necesidad de intervención manual para ajustar la escala de las aplicaciones, permitiendo a los equipos centrarse en tareas más estratégicas.

Prerrequisitos para la Configuración del HPA

Antes de sumergirnos en el mundo del Autoscaling Horizontal de Pods (HPA) en Kubernetes, es crucial asegurarse de que tanto nuestro clúster como nuestro entorno están preparados para soportar esta funcionalidad. Aquí, desglosaremos los prerrequisitos esenciales para una implementación exitosa del HPA.

Configuración del cluster de Kubernetes

Para comenzar, es fundamental tener un cluster de Kubernetes configurado y en funcionamiento. La versión del cluster debe ser compatible con las características del HPA. Asegúrate de que el cluster esté configurado correctamente con los siguientes elementos:

  • Nodos: Verifica que los nodos de tu cluster estén funcionando correctamente. Puedes utilizar el comando kubectl get nodes para listar todos los nodos disponibles y verificar su estado.
  • Red: Asegúrate de que la red del cluster esté configurada adecuadamente para permitir la comunicación entre los diferentes componentes de Kubernetes.
  • Almacenamiento: Si tu aplicación requiere persistencia, confirma que el almacenamiento está correctamente configurado y accesible para los pods.

Es importante también familiarizarse con los conceptos de deployments, services, y pods de Kubernetes, ya que serán cruciales para la configuración y el manejo del HPA.

Instalación de Metrics Server

El Metrics Server recopila métricas de los nodos y pods, como el uso de CPU y memoria, que el HPA utiliza para tomar decisiones de escalado. Por lo tanto, es un componente esencial para el funcionamiento del HPA. Aquí te mostramos cómo instalarlo:

  1. Verificar la presencia del Metrics Server: Primero, verifica si el Metrics Server ya está instalado en tu cluster con kubectl get deployment metrics-server -n kube-system.
  2. Instalación: Si el Metrics Server no está instalado, puedes hacerlo fácilmente con el siguiente comando de kubectl:
1kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
  1. Verificación: Tras la instalación, verifica que el Metrics Server esté funcionando correctamente con kubectl get pods -n kube-system | grep metrics-server.

La correcta instalación y configuración del Metrics Server es un paso crucial para asegurar que el HPA pueda funcionar adecuadamente, ya que sin las métricas de rendimiento del cluster, el HPA no podrá realizar el escalado automático de los pods.

¿Cómo Crear y Configurar el HPA de Kubernetes?

La configuración del Horizontal Pod Autoscaler (HPA) es un paso crucial para asegurar que tus aplicaciones en Kubernetes puedan manejar variaciones en la carga de trabajo de manera eficiente. A continuación, exploraremos cómo crear y configurar el HPA tanto mediante comandos kubectl como a través de archivos YAML, además de cómo ajustar los parámetros de autoscaling para optimizar el rendimiento.

Pasos para Crear un HPA mediante kubectl

Crear un HPA utilizando kubectl es un método rápido y efectivo para empezar con el autoscaling horizontal. Aquí tienes los pasos básicos:

  1. Identificar el deployment: Primero, identifica el deployment al que deseas aplicar el autoscaling. Puedes listar todos los deployments disponibles con el comando kubectl get deployments.
  2. Crear el HPA: Utiliza el comando kubectl autoscale para crear un HPA. Debes especificar el nombre del deployment, el porcentaje de utilización de CPU deseado, y el número mínimo y máximo de pods. Por ejemplo:
1kubectl autoscale deployment mi-aplicacion --cpu-percent=50 --min=1 --max=10

Este comando creará un HPA para el deployment mi-aplicacion, con el objetivo de mantener la utilización de CPU alrededor del 50%, permitiendo que el número de pods varíe entre 1 y 10 según la demanda.

  1. Verificar el HPA: Para verificar que el HPA ha sido creado y está monitoreando tu deployment, utiliza:
1kubectl get hpa
Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *

¿Cómo Configurar HPA mediante archivo YAML?

Para una configuración más detallada y personalizada, puedes definir el HPA utilizando un archivo YAML. Esto te permite especificar métricas adicionales y ajustar el comportamiento del HPA con mayor precisión. Aquí un ejemplo básico de cómo hacerlo:

  1. Crear el archivo YAML: Abre un editor de texto y crea un archivo con la siguiente estructura:
1apiVersion: autoscaling/v1 2kind: HorizontalPodAutoscaler 3metadata: 4 name: mi-hpa 5spec: 6 scaleTargetRef: 7 apiVersion: apps/v1 8 kind: Deployment 9 name: mi-aplicacion 10 minReplicas: 1 11 maxReplicas: 10 12 targetCPUUtilizationPercentage: 50

Este archivo define un HPA llamado mi-hpa que ajustará el número de pods del deployment mi-aplicacion para mantener la utilización de CPU cerca del 50%.

  1. Aplicar el archivo YAML: Guarda el archivo y aplica la configuración con el comando:
1kubectl apply -f mi-hpa.yaml

Ajuste de Parámetros de Autoscaling

Ajustar los parámetros del HPA es esencial para optimizar el rendimiento y la eficiencia de tus aplicaciones. Aquí algunos aspectos a considerar:

  • Umbral de CPU: Ajusta el targetCPUUtilizationPercentage según las necesidades de tu aplicación. Un valor más bajo puede resultar en un escalado más agresivo, mientras que un valor más alto puede retrasar el escalado hasta que sea absolutamente necesario.
  • Rangos de replicas: Los valores minReplicas y maxReplicas definen el número mínimo y máximo de pods que el HPA puede crear. Establece estos valores basándote en el máximo tráfico esperado y en los recursos disponibles.
  • Métricas personalizadas: Además de la utilización de CPU, Kubernetes permite configurar el HPA para escalar basándose en métricas personalizadas, como el tráfico de red o las solicitudes por segundo. Esto puede ser especialmente útil para aplicaciones cuyo rendimiento no se correlaciona directamente con la utilización de CPU.

Monitorización y Ajuste del HPA

La eficacia del Horizontal Pod Autoscaler (HPA) en Kubernetes no solo depende de una configuración inicial adecuada, sino también de un seguimiento continuo y ajustes basados en el rendimiento observado. A continuación, exploraremos cómo monitorear el rendimiento del HPA, realizar ajustes y optimizaciones, y cómo implementar métricas personalizadas para un escalado más preciso.

¿Cómo monitorear el rendimiento del HPA?

El monitoreo efectivo del HPA proporciona insights sobre cómo y cuándo se ajusta el número de pods para manejar la carga de trabajo. Esto se puede hacer utilizando los siguientes comandos de kubectl:

  • Ver el estado del HPA: El comando kubectl get hpa muestra el estado actual del HPA, incluyendo el número de replicas actuales y el objetivo de CPU.
1kubectl get hpa mi-hpa
  • Ver detalles del HPA: Para obtener más detalles, como eventos recientes relacionados con el escalado, utiliza kubectl describe hpa mi-hpa. Este comando ofrece una visión detallada de las acciones realizadas por el HPA y puede ayudar a identificar posibles problemas o áreas de mejora.

Ajustes y optimización del HPA

Basándose en la información obtenida a través del monitoreo, es posible que sea necesario ajustar la configuración del HPA para mejorar el rendimiento y la eficiencia. Algunos ajustes comunes incluyen:

  • Modificar los umbrales de CPU: Si observas que el HPA escala demasiado pronto o demasiado tarde, ajusta el targetCPUUtilizationPercentage en la configuración del HPA.
  • Ajustar los límites de replicas: Cambiar los valores minReplicas y maxReplicas puede ayudar a prevenir el sobredimensionamiento o el subdimensionamiento de tu aplicación.
  • Optimizar los tiempos de espera: En algunos casos, puede ser útil modificar el intervalo de tiempo entre las evaluaciones del HPA para hacer que el escalado sea más reactivo o más conservador.

Uso de métricas personalizadas para el HPA

Las métricas personalizadas permiten que el HPA tome decisiones de escalado basadas en más que solo la utilización de CPU y memoria. Por ejemplo, puedes escalar tu aplicación basándote en el número de solicitudes por segundo. Para utilizar métricas personalizadas:

  1. Habilita la recopilación de métricas personalizadas: Esto puede requerir la instalación y configuración de servicios adicionales como Prometheus.
  2. Define métricas personalizadas en tu HPA: Modifica la configuración de tu HPA para incluir las métricas personalizadas deseadas. Esto se hace a través de un archivo YAML que especifica las métricas a observar y los umbrales para el escalado.
1apiVersion: autoscaling/v2beta2 2kind: HorizontalPodAutoscaler 3metadata: 4 name: mi-hpa 5spec: 6 scaleTargetRef: 7 apiVersion: apps/v1 8 kind: Deployment 9 name: mi-aplicacion 10 minReplicas: 1 11 maxReplicas: 10 12 metrics: 13 - type: Pods 14 pods: 15 metric: 16 name: http_requests 17 target: 18 type: AverageValue 19 averageValue: 1000m
  1. Aplica los cambios: Utiliza kubectl apply -f tu-hpa.yaml para aplicar la configuración actualizada.

Autoscaling Basado en Métricas Personalizadas

El Autoscaling Basado en Métricas Personalizadas es una evolución del autoscaling tradicional, que permite una mayor flexibilidad y precisión en el escalado de aplicaciones en Kubernetes. A diferencia del escalado basado únicamente en CPU y memoria, el uso de métricas personalizadas abre la puerta a ajustar el escalado según indicadores específicos del negocio o de la aplicación, como el número de solicitudes por segundo, latencia, o cualquier otra métrica relevante para el rendimiento de la aplicación.

Para implementar este tipo de autoscaling, es necesario utilizar el API custom.metrics.k8s.io junto con el Metrics Server o soluciones de monitoreo externas como Prometheus, que pueden recolectar y exponer estas métricas personalizadas para que el HPA las utilice.

Configuración y uso de métricas personalizadas con HPA

Para comenzar con las métricas personalizadas, se deben seguir los siguientes pasos:

  1. Implementar una solución de monitoreo: Si aún no cuentas con una, implementa una solución de monitoreo que sea capaz de recolectar y exponer las métricas personalizadas. Prometheus es una opción popular en el ecosistema de Kubernetes por su integración y flexibilidad.
  2. Exponer las métricas personalizadas: Configura tu solución de monitoreo para exponer las métricas personalizadas que deseas utilizar para el autoscaling. Esto puede implicar la configuración de instrumentación en el código de tu aplicación o la configuración de la solución de monitoreo para recolectar métricas específicas.
  3. Configurar el HPA para usar métricas personalizadas: Una vez que las métricas están siendo recolectadas y expuestas correctamente, debes crear o modificar tu HPA para que utilice estas métricas. Esto se hace definiendo un objeto HPA que especifique las métricas personalizadas en su configuración, como se muestra a continuación:
1apiVersion: autoscaling/v2beta2 2kind: HorizontalPodAutoscaler 3metadata: 4 name: mi-aplicacion-hpa 5spec: 6 scaleTargetRef: 7 apiVersion: apps/v1 8 kind: Deployment 9 name: mi-aplicacion 10 minReplicas: 1 11 maxReplicas: 10 12 metrics: 13 - type: Pods 14 pods: 15 metric: 16 name: mi_metrica_personalizada 17 target: 18 type: AverageValue 19 averageValue: 100

Este ejemplo de configuración del HPA indica que el escalado se basará en la métrica personalizada mi_metrica_personalizada, intentando mantener el valor promedio de esta métrica en 100 entre todos los pods.

  1. Monitorear y ajustar: Una vez implementado, es crucial monitorear el comportamiento del escalado y ajustar los umbrales o la propia métrica si es necesario, para asegurar que el escalado responde adecuadamente a las condiciones reales de carga de trabajo.

Conviértete en un Experto en Kubernetes

Hemos recorrido un camino detallado sobre cómo configurar el Autoescalado de Pods (HPA) en Kubernetes, cubriendo desde los prerrequisitos básicos hasta la implementación de métricas personalizadas. Esta capacidad de Kubernetes no solo optimiza el uso de recursos sino que también asegura la alta disponibilidad y eficiencia de tus aplicaciones.

Para aquellos que deseen profundizar aún más en Kubernetes y convertirse en expertos de esta plataforma, le recomendamos nuestro curso de Kubernetes. Este curso está diseñado para brindarte un entendimiento profundo de cómo Kubernetes maneja los recursos y la carga de trabajo, permitiéndote sacar el máximo provecho de esta poderosa herramienta de orquestación de contenedores.

¡Únete a nosotros y lleva tus habilidades en Kubernetes al siguiente nivel!

Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *
Tutoriales relacionados
Openshift vs Kubernetes: Guía Comparativa
Descubre las claves para dominar OpenShift y Kubernetes. Aprende las diferencias esenciales y potencia tu conocimiento en la gestión de contenedores.
Qué es Docker Compose y Cómo Usarlo | Tutorial Completo
Domina Docker Compose: Descubre Qué es Docker Compose y Aprende a Maximizar la eficiencia de tus aplicaciones con esta guía completa #DockerCompose
¿Qué es un Pod de Kubernetes? ¿Para que Sirve?
Profundizando en Kubernetes: Descubre Cómo los Pods de Kubernetes Transforman la Gestión de Contenedores y Microservicios en la Era de la Nube
¿Qué es OKD de Openshift? Guía Completa
Descubre qué es OKD Openshift y cómo esta plataforma de contenedores de código abierto ayuda a las empresas a gestionar aplicaciones escalables.
Kubernetes: Guía Completa para Principiantes
kubernetes
artículo
Conoce Kubernetes, la herramienta líder para automatizar la gestión y escalado de aplicaciones en entornos de contenedores de manera eficiente.
Descubre
Tabla de contenido
Qué es el Autoscaling Horizontal de Pods (HPA)
¿Cómo funciona el HPA?
Beneficios del uso de HPA
Prerrequisitos para la Configuración del HPA
Configuración del cluster de Kubernetes
Instalación de Metrics Server
¿Cómo Crear y Configurar el HPA de Kubernetes?
Pasos para Crear un HPA mediante kubectl
¿Cómo Configurar HPA mediante archivo YAML?
Ajuste de Parámetros de Autoscaling
Monitorización y Ajuste del HPA
¿Cómo monitorear el rendimiento del HPA?
Ajustes y optimización del HPA
Uso de métricas personalizadas para el HPA
Autoscaling Basado en Métricas Personalizadas
Configuración y uso de métricas personalizadas con HPA
Conviértete en un Experto en Kubernetes
Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *