水平 Pod 自动扩展(HPA)是 Kubernetes 的一项功能,可根据观察到的 CPU 和内存使用情况自动调整部署中 Pod 的数量。这可确保您的应用程序能高效处理不同的负载,而无需人工干预。
下面的代码演示了如何创建一个 HPA 资源,根据 CPU 利用率调整 Pod 的数量。
[代码清单]
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: my-app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
[执行结果]
该 YAML 配置在应用时不会产生直接输出,但会创建一个 HPA 资源,用于监控 my-app 部署中 Pod 的 CPU 使用情况。如果 CPU 平均使用率超过 50%,HPA 就会增加 Pod 的数量,最多不超过 10 个。
HPA 资源以 YAML 格式定义,指定目标部署和所需的 CPU 利用率百分比。minReplicas 和 maxReplicas 字段决定了扩展限制。当 CPU 使用率超过定义的阈值时,Kubernetes 会自动创建更多 Pod 来平衡负载,反之,如果负载减少,它就会减少 Pod 的数量。
[小知识]
HPA 还可以根据自定义指标进行扩展,而不仅仅是 CPU 和内存。
HPA 控制器会持续监控指标,并默认每 30 秒调整一次 Pod 的数量。
要有效使用 HPA,请确保在群集中安装了 metrics-server,因为它会收集资源使用数据。