yaml#
apiVersion: autoscaling.alibabacloud.com/v1beta1 kind: AdvancedHorizontalPodAutoscaler metadata: name: demoname-name-requestor-aliyun-ahpa namespace: requestor spec: scaleStrategy: auto metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 95 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: demoname-name-requestor-aliyun-deployment maxReplicas: 128 minReplicas: 32 stabilizationWindowSeconds: 1800 prediction: quantile: 95 scaleUpForward: 60 instanceBounds: - startTime: "2021-12-16 00:00:00" endTime: "2031-12-16 00:00:00" bounds: - cron: "* 0-8 * * *" maxReplicas: 128 minReplicas: 32 - cron: "* 9-15 * * *" maxReplicas: 128 minReplicas: 32 - cron: "* 16-23 * * *" maxReplicas: 128 minReplicas: 32说明#
这是一份阿里云 ACK(Alibaba Cloud Container Service for Kubernetes)中使用的 AdvancedHorizontalPodAutoscaler(AHPA) 的 YAML 配置文件,用于自动伸缩 Pod 副本数。下面是该配置的逐项解释:
基本信息:#
apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: AdvancedHorizontalPodAutoscaler
metadata:
name: demoname-name-requestor-aliyun-ahpa
namespace: requestor- apiVersion: 使用的是阿里云 AHPA 的 beta 版本 API。
- kind: 对象类型是
AdvancedHorizontalPodAutoscaler。 - metadata: 定义了 AHPA 的名字和命名空间。
规格(spec)部分:#
spec:
scaleStrategy: auto- scaleStrategy: auto:表示使用系统自动判断是扩容还是缩容。
伸缩指标(metrics):#
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 95- 指标类型是
Resource。 - 基于 CPU 利用率进行伸缩。
- 当目标 Deployment 的 平均 CPU 利用率超过 95% 时会触发扩容。
目标对象(scaleTargetRef):#
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: demoname-name-requestor-aliyun-deployment- 表示 AHPA 控制的是一个 Deployment 对象,名字是
ddjaliyunhkflashup-novaclicker-requestor-aliyun-deployment。
副本数范围:#
maxReplicas: 128
minReplicas: 32- Pod 副本数最少 32,最多 128。
缓冲期(抖动抑制):#
stabilizationWindowSeconds: 1800- 缩放变化的稳定窗口是 1800 秒(30 分钟),避免频繁扩缩容。
预测(prediction):#
prediction:
quantile: 95
scaleUpForward: 60- 使用预测模型提高伸缩的前瞻性。
quantile: 95:预测模型使用 95 分位数预测资源使用率。scaleUpForward: 60:提前 60 秒预测是否需要扩容。
分时段配置(instanceBounds):#
instanceBounds:
- startTime: "2021-12-16 00:00:00"
endTime: "2031-12-16 00:00:00"
bounds:
- cron: "* 0-8 * * *"
maxReplicas: 128
minReplicas: 32
- cron: "* 9-15 * * *"
maxReplicas: 128
minReplicas: 32
- cron: "* 16-23 * * *"
maxReplicas: 128
minReplicas: 32- 在整个 2021–2031 的时间范围内,定义了每天不同时段的副本数边界。
- 每个
cron表达式代表某个小时段:0-8点、9-15点、16-23点都设置了相同的 min/max:32~128。- 虽然三段设置一样,但可以根据需要设置不同的时间段副本策略(这里只是统一配置了)。
总结:#
这个 AHPA 配置做了如下工作:
- 基于 CPU 利用率 > 95% 来进行扩缩容。
- 支持预测性扩容,提升响应速度。
- 允许 Pod 数在 32~128 之间动态调整。
- 每天 24 小时内的副本数配置是一样的(未来可以细化)。
- 设置了 30 分钟的稳定窗口,防止频繁调整副本数。
如需进一步优化,可针对不同时间段配置不同的 min/maxReplicas,或者引入更多维度的指标(如内存、QPS、自定义指标)。是否需要我帮你改进一下这个配置?