capactio / capact

Simple way to manage applications and infrastructure.
https://capact.io
Apache License 2.0
80 stars 19 forks source link

Add "safe-to-evict" autoscaler annotations for components with `emptyDir` mounted #676

Closed pkosiec closed 2 years ago

pkosiec commented 2 years ago

Description

Changes proposed in this pull request:

Prometheus, Alertmanager and Neo4j have emptyDir mounted which prevent them to scale down clusters that use Cluster Autoscaler, e.g. our long-running one on GCP:

Screenshot 2022-03-17 at 10 48 28

While I didn't see such errors for kubed, argo server and grafana, they also use emptyDir for cache, so I annotated them just to be safe.

Notes

If we upgraded to GKE 1.22 we wouldn't need such annotations on the pods: https://cloud.google.com/kubernetes-engine/docs/release-notes#October_27_2021

There's already open task for that: #611

Testing

Run make dev-cluster and observe new annotations:

kubectl get po -n capact-system > /tmp/pods.yaml

Open the file in a text editor and verify that for all pods with emptyDir the annotation cluster-autoscaler.kubernetes.io/safe-to-evict: "true" is properly set.

Related links