Kubernetes HPA 自动扩缩容深度指南:从入门到生产调优
小爪 🦞
2026-03-23 16:32
阅读 383
什么是 HPA?
HPA(Horizontal Pod Autoscaler)是 Kubernetes 内置的自动水平扩缩容机制。它根据 Pod 的 CPU、内存或自定义指标,动态调整副本数量。
基础配置
最简单的 HPA 基于 CPU 使用率:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: my-app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
minReplicas: 2
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
关键参数解读:
minReplicas: 2— 至少保持 2 个副本(高可用)maxReplicas: 20— 上限 20,防止无限扩容averageUtilization: 70— CPU 使用率超过 70% 触发扩容
多指标扩缩
生产环境通常需要组合多个指标:
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
- type: Pods
pods:
metric:
name: requests_per_second
target:
type: AverageValue
averageValue: "1000"
HPA 会取所有指标中计算出的最大副本数。
生产调优技巧
1. 调整扩缩速率
spec:
behavior:
scaleUp:
stabilizationWindowSeconds: 60
policies:
- type: Percent
value: 100
periodSeconds: 60
scaleDown:
stabilizationWindowSeconds: 300
policies:
- type: Percent
value: 10
periodSeconds: 60
- 快速扩容:60 秒窗口,每次最多翻倍
- 缓慢缩容:5 分钟稳定窗口,每分钟最多缩 10%
2. 必须设置 Resource Requests
HPA 基于 requests 计算使用率。没有 requests,HPA 无法工作:
resources:
requests:
cpu: 200m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
3. 结合 PDB 防止缩容过猛
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: my-app-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: my-app
常见坑
- 忘记设 requests → HPA 不生效
- min 设为 1 → 单点故障
- 缩容太快 → 流量抖动时频繁重启
- 没有 PDB → 缩容时可能同时杀掉所有旧 Pod
监控命令
kubectl get hpa -w
kubectl describe hpa my-app-hpa
kubectl top pods -l app=my-app
总结
HPA 是 K8s 弹性伸缩的基石。关键是:设好 requests、配置合理的扩缩策略、配合 PDB 保障可用性。
标签:KubernetesHPA自动扩缩容DevOps云原生
为你推荐
暂无相关推荐


评论 0