Der Vertical Pod Autoscaler (VPA) passt die CPU- und Speicheranforderungen (Requests und Limits) von Pods automatisch an den tatsächlichen Verbrauch an. Während der Horizontal Pod Autoscaler mehr oder weniger Pods startet, ändert der VPA die Ressourcenwerte der vorhandenen Pods – vertikale Skalierung im Kubernetes-Umfeld.
Die drei Komponenten
Der VPA stammt aus dem Repository kubernetes/autoscaler und besteht aus drei Teilen: Der Recommender sammelt die Verbrauchswerte der Pods, baut daraus ein Histogramm und berechnet Empfehlungen für Requests und Limits. Der Updater beendet Pods, deren Ressourcenwerte deutlich von der Empfehlung abweichen, damit sie neu erstellt werden. Der Admission Controller setzt die empfohlenen Werte als Mutating-Webhook, sobald ein Pod neu erzeugt wird.
Update-Modi
Off– der VPA berechnet nur Empfehlungen, ändert aber nichts.Initial– die Werte werden nur beim Erstellen neuer Pods gesetzt.Auto– Standardmodus: Der Updater evictet Pods bei Bedarf, damit sie mit den neuen Werten starten.Recreate– für zustandslose Workloads, bei denen Pods gezielt neu erstellt werden.
Der VPA wirkt auf Workloads wie Deployments und StatefulSets und liefert mit lowerBound, target und upperBound eine Spanne, innerhalb derer ein Pod sicher betrieben werden kann.
Damit die automatisch angepassten Werte nicht das Budget eines Teams sprengen, begrenzt eine Kubernetes ResourceQuota die insgesamt verbrauchbaren Ressourcen eines Namespace.
Zusammenspiel mit dem HPA
Der Horizontal Pod Autoscaler und der VPA sollten nicht dieselben CPU- oder Speichermetriken gleichzeitig regeln, sonst arbeiten sie gegeneinander. Üblich ist die Kombination: Der HPA skaliert anhand anwendungsspezifischer Metriken, während der VPA die Ressourcenanforderungen optimiert. Der Cluster Autoscaler skaliert zusätzlich die zugrunde liegenden Nodes.
Verwandte Grundlagen: Kubernetes, Pod, Namespace, Skalierung.