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、自定义指标)。是否需要我帮你改进一下这个配置?