Escalador automático de pods horizontales
El escalador automático de pods horizontales
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)
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.
Este tema se explica en Horizontal pod autoscaler walkthrough (Explicación del escalador automático de pods horizontales)
Requisitos previos
-
Tiene un clúster de Amazon EKS existente. Si no lo tiene, consulte Introducción a Amazon EKS.
-
Tiene instalado el servidor de métricas de Kubernetes. Para obtener más información, consulte . Instalación del servidor de métricas de Kubernetes.
-
Utiliza un cliente
kubectl
que está configurado para comunicarse con el clúster de Amazon EKS.
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.
Este ejemplo se explica en Horizontal pod autoscaler walkthrough (Explicación del escalador automático de pods horizontales)
Para probar la instalación del escalador automático de pods horizontales
-
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.
-
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. -
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. -
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"
-
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 deREPLICAS
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.
-
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. -
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