Autoscaling
Per questo esercizio occorre Minikube.
Lanciare Minikube:
minikube start --base-image='gcr.io/k8s-minikube/kicbase:v0.0.35'
Abilitare lo add-on Metrics Server:
minikube addons enable metrics-server
Controllare gli add-on:
minikube addons list
mkdir -p ~/ex/auto
wget https://k8s.io/examples/application/php-apache.yaml
mv php-apache.yaml ~/ex/auto/php-apache.yml
cd ~/ex/auto
Applichiamo il deployment:
kubectl apply -f php-apache.yml
L'immagine scaricata compie del lavoro intensivo di CPU:
<?php
$x = 0.0001;
for ($i = 0; $i <= 1000000; $i++) {
$x += sqrt($x);
}
echo "OK!";
?>
Creiamo uno Horizontal Pod Autoscaler:
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
Verifichiamo gli HPA:
kubectl get hpa
Per aumentare il carico, in un'altra finestra:
kubectl run -it --rm load-generator --image=busybox /bin/sh
E all'interno del contenitore lanciamo il comando:
while true; do wget -q -O- http://php-apache; done
Sul primo terminale:
kubectl get hpa -w
kubectl get pods
Torniamo sul secondo terminale e interrompiamo con Ctrl-C.
Sul primo terminale ripetiamo:
kubectl get hpa -w
kubectl get pods
Canccellare lo autoscaler:
kubectl delete hpa php-apache
Pulizia:
kubectl delete -f php-apache.yml