Cron 触发器
Cron 触发器适用于有周期性特征的业务,例如业务流量具有固定的周期性波峰和波谷特征。
使用示例
每天固定时间点的秒杀活动
秒杀活动的特征是时间比较固定,可以在活动开始前提前扩容,以下展示了
ScaledObject
配置示例。apiVersion: keda.sh/v1alpha1kind: ScaledObjectmetadata:name: seckillspec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: seckillpollingInterval: 15minReplicaCount: 2 # 至少保留 2 个副本maxReplicaCount: 1000advanced:horizontalPodAutoscalerConfig:behavior: # 控制扩缩容行为,使用比较保守的策略,快速扩容,缓慢缩容scaleDown: # 缓慢缩容:至少冷却 10 分钟才能缩容stabilizationWindowSeconds: 600policies:- type: Percentvalue: 100periodSeconds: 15scaleUp: # 快速扩容:每 15s 最多允许扩容 5 倍policies:- type: Percentvalue: 500periodSeconds: 15triggers:- type: cron # 每天早上 10 点秒杀活动,确保前后半小时内至少有 200 个副本metadata:timezone: Asia/Shanghaistart: 30 9 * * *end: 30 10 * * *desiredReplicas: "200"- type: cron # 每天晚上 6 点秒杀活动,确保前后半小时内至少有 200 个副本metadata:timezone: Asia/Shanghaistart: 30 17 * * *end: 30 18 * * *desiredReplicas: "200"- type: memory # CPU 利用率超过 60% 扩容metricType: Utilizationmetadata:value: "60"- type: cpu # 内存利用率超过 60% 扩容metricType: Utilizationmetadata:value: "60"
注意事项
通常情况下,触发器不能仅配置 Cron,还需要与其他触发器配合使用。因为如果在 Cron 的 start 和 end 区间之外的时间段,如果没有其它触发器活跃,副本数将会降到
minReplicaCount
。