Kubernetes
Eine Open-Source-Plattform zur Automatisierung von Deployment, Skalierung und Verwaltung von Container-Anwendungen – der Standard für Container-Orchestrierung.
Die automatische Anpassung von Compute-Ressourcen basierend auf Last – mehr Server bei hoher Nachfrage, weniger bei niedriger. Kosteneffizient und performant.
Autoscaling passt die Anzahl deiner Server automatisch an die aktuelle Last an. Mehr Nutzer = mehr Server. Weniger Nutzer = weniger Server (und Kosten).
Ohne Autoscaling:
Feste Kapazität: immer gleich viele Server
Niedrige Last: viele Ressourcen idle, unnötige Kosten
Peak: zu wenig Kapazität, langsam oder fehleranfällig
Mit Autoscaling:
Niedrige Last: wenige Instanzen → kosteneffizient
Normale Last: passende Kapazität → stabil
Peak: zusätzliche Instanzen → bessere Performance
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: api-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: api
minReplicas: 2
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: queue-worker
spec:
scaleTargetRef:
name: worker-deployment
minReplicaCount: 0 # Scale to Zero!
maxReplicaCount: 50
triggers:
- type: rabbitmq
metadata:
queueName: tasks
queueLength: "10" # 1 Worker pro 10 Messages
# Terraform
resource "aws_autoscaling_group" "api" {
name = "api-asg"
min_size = 2
max_size = 20
desired_capacity = 5
launch_template {
id = aws_launch_template.api.id
version = "$Latest"
}
}
resource "aws_autoscaling_policy" "scale_up" {
name = "scale-up"
autoscaling_group_name = aws_autoscaling_group.api.name
policy_type = "TargetTrackingScaling"
target_tracking_configuration {
predefined_metric_specification {
predefined_metric_type = "ASGAverageCPUUtilization"
}
target_value = 70.0
}
}
| Strategie | Trigger | Use Case |
|---|---|---|
| CPU-basiert | CPU-Auslastung über Zielwert | Compute-intensive Workloads |
| Memory-basiert | Memory-Auslastung über Zielwert | Memory-intensive Apps |
| Request-basiert | Requests/Sekunde | Web-APIs |
| Queue-basiert | Queue-Länge | Async Workers |
| Schedule-basiert | Uhrzeit | Vorhersehbare Patterns |
| Custom Metrics | Business-Metriken | Spezifische Anforderungen |
# Kubernetes HPA Behavior
behavior:
scaleDown:
stabilizationWindowSeconds: 300 # 5 Min warten
policies:
- type: Percent
value: 10
periodSeconds: 60 # Max 10% pro Minute runter
scaleUp:
stabilizationWindowSeconds: 0 # Sofort hoch
policies:
- type: Percent
value: 100
periodSeconds: 15 # Schnell hochskalieren
Strategie: geeigneter Instanz-Mix für Autoscaling
- Basis-Last: stabile Kapazität für planbare Nachfrage
- Peaks: flexible oder unterbrechbare Kapazität, wenn Workload das erlaubt
- Steuerung: Limits, Budgets und Alerts gegen unerwartete Skalierungskosten Autoscaling ist wie ein Supermarkt, der automatisch mehr Kassen öffnet wenn die Schlangen lang werden, und sie wieder schließt wenn es ruhiger wird – immer genau so viele wie nötig.
Skaliert automatisch basierend auf Metriken (CPU, Requests, Queue)
Horizontal (mehr Instanzen) oder Vertikal (größere Instanzen)
Spart Kosten bei niedriger Last, garantiert Performance bei hoher
Web-Traffic
Mehr Server bei Traffic-Spitzen (Black Friday, Kampagnen)
ML-Inference
GPU-Instanzen nach Bedarf hoch- und runterfahren
Batch-Processing
Worker für Queue-Verarbeitung skalieren
Kostenoptimierung
Nachts und am Wochenende runterskalieren
Horizontal skalieren ist oft flexibler und ausfallsicherer, vertikal skalieren kann bei einfachen Setups leichter sein. Die bessere Wahl hängt von Architektur, State Management, Datenbank, Kosten und Betriebsmodell ab.
Abhängig von Plattform, Metriken, Cooldowns, Image-Startzeit und Ressourcenverfügbarkeit. Für plötzliche Spikes helfen Mindestkapazität, Predictive Scaling oder vorgewärmte Instanzen.
Bei keiner Last auf 0 Instanzen runterskalieren. Spart Kosten, aber Cold Start bei erstem Request. Serverless macht das automatisch.