Configurar Horizontal Pod Autoscaler en Kubernetes

Habilitar metrics plugin en Minikube:

minikube addons enable metrics-server

Iniciar una implementación y exponla como un servicio:

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

Crear un Horizontal Pod Autoscaler:

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

Este comando crea un HPA con un mínimo de un pod y un máximo de diez pods en ejecución. Intentará mantener el uso promedio de los pods al 50 % y, si hay más uso, creará automáticamente más pods para mantener el uso al 50 %.

Para probarlo, se deberá ejecutar lo siguiente en una terminal diferente:

  kubectl run -it --rm load-generator --image=busybox /bin/sh

Luego, para crear el tráfico necesario para que HPA comience a funcionar:

**while true; do wget -q -O- http://php-apache; done**

De vuelta en la primera terminal, es posible controlar el HPA con:

kubectl get hpa -w

Para tener más control sobre el HPA también es posible crearlo con un archivo mainfest, el equivalente al comando kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10 sería:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization

HPA también se puede configurar según el uso de la CPU o las solicitudes recibidas, es una buena idea guardarlo como un archivo para mantener un registro de la configuración del HPA.

Enlaces de referencia

Last updated