Kubernetes Skalierung
Skalierungs-Ebenen
- Pod-Level: HPA, VPA
- Node-Level: Cluster Autoscaler
- Event-driven: KEDA
Horizontal Pod Autoscaler (HPA)
Funktionsweise
- Überwacht Pod-Metriken
- Skaliert Replica-Anzahl
- Target-basierte Skalierung
Metriken
- CPU Utilization
- Memory Utilization
- Custom Metrics
- External Metrics
Konfiguration
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
Vertical Pod Autoscaler (VPA)
Funktionsweise
- Passt Resource Requests an
- Basiert auf historischen Daten
- Kann Pods neustarten
Modi
- Off: Nur Empfehlungen
- Initial: Nur bei Pod-Erstellung
- Auto: Automatische Anpassung
Use Cases
- Richtiges Sizing finden
- Batch Workloads
- Memory-intensive Apps
Cluster Autoscaler
Funktionsweise
- Skaliert Node-Anzahl
- Reagiert auf Pending Pods
- Entfernt unterausgelastete Nodes
Cloud-Integration
- AWS Auto Scaling Groups
- GCP Managed Instance Groups
- Azure Virtual Machine Scale Sets
Konfiguration
- Min/Max Nodes
- Scale-Down Delay
- Node Pool Auswahl
KEDA (Kubernetes Event-driven Autoscaling)
Funktionsweise
- Event-basierte Skalierung
- Skaliert bis auf 0
- Externes Event Triggering
Scaler (Auswahl)
- Apache Kafka
- RabbitMQ
- AWS SQS
- Azure Service Bus
- Prometheus
- Cron
Beispiel
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
spec:
scaleTargetRef:
name: worker
minReplicaCount: 0
maxReplicaCount: 100
triggers:
- type: kafka
metadata:
topic: orders
lagThreshold: "100"
Best Practices
- HPA und VPA nicht kombinieren (CPU/Memory)
- Resource Requests definieren
- Pod Disruption Budgets setzen
- Graceful Shutdown implementieren
- Cooldown-Perioden beachten
Metriken-Server
- Voraussetzung für HPA
- Sammelt Resource-Metriken
- Standardmäßig installiert (Managed K8s)
CFTools Software implementiert optimale Skalierungsstrategien für Kubernetes.