Späť na blog
2026-05-10Prevádzka

Cluster Autoscaler a MachineSety

Automatické škálovanie worker nodes na cloude.

MachineAPI operator riadi životný cyklus nodov na cloud providrovi (AWS, Azure, GCP, vSphere). MachineSet je Kubernetes-native "auto scaling group" – definuje template pre Machine (instance type, disk, subnet) a replica count.

ClusterAutoscaler CR + MachineAutoscaler CR spolu tvoria autoscaling stack. ClusterAutoscaler je globálny (jedna inštancia pre celý klaster) a rozhoduje o scale up/down. MachineAutoscaler je per MachineSet a nastavuje `minReplicas`/`maxReplicas`. Autoscaler pridá node keď sú pending pody kvôli resource constraint-om.

Scale-down je opatrnejší. Node musí byť underutilized 10+ minút (`--scale-down-unneeded-time`), nesmie hostiť pody bez PDB, kube-system pody sa musia dať evictnúť. Ak máš daemonset s `nodeSelector` na všetky nodes, scale-down nikdy neodíde – riešenie je taint tolerations a explicit exclusion.

Rezerva na system pods je kritická. OpenShift vyhradí cca 1 vCPU a 1 GB RAM na node pre kubelet, CRI-O, OVN-K a monitoring. Ak si MachineSet nastavíš na m5.large (2 vCPU, 8 GB), reálne máš 1 vCPU a 6 GB pre pody. Overhead sa dá znížiť použitím väčších inštancií – jeden m5.4xlarge má menej overhead než 8x m5.large.

Multi-AZ setup je must pre HA. Vytvor MachineSet per availability zone (napr. `worker-us-east-1a`, `worker-us-east-1b`, `worker-us-east-1c`) a nastav topologySpreadConstraints v Deployments, aby pody spread-ovali medzi AZ. ClusterAutoscaler potom škáluje AZ, ktorá má najviac pending podov, bez zamotávania sa v cross-AZ traffic cost.