Escalador automático de pods horizontales - Amazon EKS

Escalador automático de pods horizontales

El escalador automático de pods horizontales de Kubernetes escala automáticamente el número de pods en una implementación, un controlador de reproducción o un conjunto de réplicas en función de la utilización de la CPU de ese recurso. Esto puede ayudar a las aplicaciones a escalar horizontalmente para satisfacer el aumento de la demanda o a reducir horizontalmente cuando no se necesitan recursos y, de esa forma, liberar los nodos para otras aplicaciones. Cuando se establece un porcentaje de utilización de CPU objetivo, el escalador automático de pods horizontales escala su aplicación de forma horizontal o la reduce horizontalmente para intentar alcanzar ese objetivo.

El escalador automático de pods horizontales es un recurso de la API estándar en Kubernetes que simplemente requiere que una fuente de métricas (como el servidor de métricas de Kubernetes) esté instalada en el clúster de Amazon EKS para funcionar. No es necesario implementar ni instalar el escalador automático de pods horizontales en el clúster para comenzar a escalar las aplicaciones. Para obtener más información, consulte Horizontal Pod Autoscaler (Escalador automático de pods horizontales) en la documentación de Kubernetes.

Utilice este tema para preparar el escalador automático de pods horizontales para el clúster de Amazon EKS y para verificar que funciona con una aplicación de ejemplo.

Requisitos previos

Ejecutar una aplicación de prueba del escalador automático de pods horizontales

En esta sección, implementará una aplicación de ejemplo para verificar que el escalador automático de pods horizontales funciona.

nota

Para probar la instalación del escalador automático de pods horizontales

  1. Implemente una aplicación de servidor web Apache sencilla con el siguiente comando.

    kubectl apply -f https://k8s.io/examples/application/php-apache.yaml

    Este pod de servidor web Apache tiene un límite de CPU 500 milicpu y sirve en el puerto 80.

  2. Cree un recurso del escalador automático de pods horizontales para la implementación de php-apache.

    kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

    Este comando crea un escalador automático que tiene como objetivo el 50 por ciento de utilización de la CPU para la implementación, con un mínimo de un pod y un máximo de diez pods. Cuando la carga media de CPU es inferior al 50 por ciento, el escalador automático intenta reducir el número de pods en la implementación a un mínimo de uno. Cuando la carga es superior al 50 por ciento, el escalador automático intenta aumentar el número de pods en la implementación, hasta un máximo de diez. Para obtener más información, consulte How does the Horizontal Pod Autoscaler work? (¿Cómo funciona el escalador automático de pods horizontales?) en la documentación de Kubernetes.

  3. Describa el escalador automático con el siguiente comando para ver los detalles.

    kubectl get hpa

    Salida:

    NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 0%/50% 1 10 1 51s

    Como puede ver, la carga actual de la CPU es 0%, porque todavía no hay carga en el servidor. El recuento de pods ya se encuentra en su límite más bajo (uno), por lo que no se puede reducir horizontalmente.

  4. Cree una carga para el servidor web mediante la ejecución un contenedor.

    kubectl run -i \ --tty load-generator \ --rm --image=busybox \ --restart=Never \ -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"
  5. Para ver que la implementación escale horizontalmente, ejecute de manera periódica el siguiente comando en un terminal independiente desde el terminal en el que ejecutó el paso anterior.

    kubectl get hpa php-apache

    Salida:

    NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 250%/50% 1 10 5 4m44s

    El recuento de réplicas puede tardar más de un minuto en aumentar. Mientras el porcentaje actual de la CPU sea superior al porcentaje objetivo, el recuerdo de réplicas aumenta hasta 10. En este caso, es 250%, para que el número de REPLICAS siga en aumento.

    nota

    Pueden pasar unos minutos antes de que vea que el recuento de réplicas alcanza su máximo. Si solo se necesitan 6 réplicas, por ejemplo, para que la carga de la CPU permanezca al o por debajo del 50 %, la carga no superará las 6 réplicas.

  6. Detenga la carga. En la ventana del terminal en la que genera la carga, mantenga presionadas las teclas Ctrl+C para detener la carga. Puede ver cómo las réplicas vuelven a escalar a 1 al ejecutar de nuevo el siguiente comando en el terminal en el que ve la reducción horizontal.

    kubectl get hpa

    Salida

    NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 0%/50% 1 10 1 25m
    nota

    El periodo predeterminado para reducir la escala es de cinco minutos, por lo que pasará algún tiempo antes de que vea que el recuento de réplicas es de 1 de nuevo, incluso cuando el porcentaje actual de la CPU es 0 %. El periodo de tiempo es modificable. Para obtener más información, consulte Horizontal Pod Autoscaler (Escalador automático de pods horizontales) en la documentación de Kubernetes.

  7. Cuando haya terminado de experimentar con la aplicación de ejemplo, elimine los recursos php-apache.

    kubectl delete deployment.apps/php-apache service/php-apache horizontalpodautoscaler.autoscaling/php-apache