Skalowanie po CPU

Autoskalowanie na podstawie CPU

flowchart LR; subgraph flaskdemo flaskdemo-1 flaskdemo-2 flaskdemo-N end HPA --get metrics--> metrics-server HPA --scale up/down--> flaskdemo

Kod dostępny w branchu: 3-cpuload

Sprawdż czy masz dostępne metryki

kubectl get --raw /apis/metrics.k8s.io/v1beta1/

lub

kubectl top node
kubectl top pod

Zainstaluj brakujący komponent - metrics-server

minikube addons enable metrics-server

Zweryfikuj czy rzeczywiście nowe api jest wystawione i obsługiwane przez metrics-server

kubectl get apiservices.apiregistration.k8s.io

Dodaj obsługę nowego profilu do skaffold korzystając z konfiguracji kustomize dostępnej w k8s/stresscpu. Na końcu skaffold.yaml dodaj

profiles:
- name: stresscpu
  deploy:
    kustomize:
        paths:
        - k8s/stresscpu

Następnie uruchom aplikację korzystając z nowego profilu

skaffold dev -p stresscpu

Wygeneruj obciążenie CPU na tym jednym kontenerze

kubectl exec -it stresscpu-flaskdemo-JAKIES-ID -- /bin/sh -c "cat /dev/zero > /dev/null"

Możesz łatwo obserwować zachowanie autoscalera poleceniem

kubectl get hpa -w

Zmień ilość replik na coś więcej niż 2 - ustaw w pliku k8s/stresscpu/hpa.yaml.

Zmień też average utilization na 700 i powtórz test obciążenia. Zobacz jak się wówczas zachowa.