91 / 95 · 05 Performance & Chaos Engineering · Kubernetes Scaling and Container Performance Testing← prev⊞ allnext →☰ Read as one page
14.3HPA Configuration for Performance
Basic CPU-Based HPA
# hpa-cpu-based.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: checkout-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: checkout-service
minReplicas: 3
maxReplicas: 50
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 60 # scale up when avg CPU > 60%
behavior:
scaleUp:
stabilizationWindowSeconds: 30 # react to spikes quickly
policies:
- type: Percent
value: 100 # can double pod count per scaling event
periodSeconds: 60
- type: Pods
value: 5 # or add 5 pods, whichever is larger
periodSeconds: 60
selectPolicy: Max
scaleDown:
stabilizationWindowSeconds: 300 # wait 5 min before scaling down
policies:
- type: Percent
value: 10 # remove at most 10% of pods per interval
periodSeconds: 60
Custom Metrics HPA (Requests Per Second)
CPU-based HPA is often too slow for traffic-driven scaling. Custom metrics based on request rate can be more responsive:
# hpa-custom-metrics.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: checkout-hpa-custom
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: checkout-service
minReplicas: 3
maxReplicas: 50
metrics:
- type: Pods
pods:
metric:
name: http_requests_per_second
target:
type: AverageValue
averageValue: 100 # target 100 req/s per pod
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70