我有一个 GCP 托管实例组,我想使用 cron 计划将其扩展至 0 到 1 个实例。
GCP 有一个局限性 https://cloud.google.com/compute/docs/autoscaler/scaling-schedules#limitations说的是:
扩展计划只能用于至少具有一种其他类型的自动扩展信号的 MIG,例如基于平均 CPU 利用率、负载平衡服务容量或云监控指标的扩展信号。
所以我必须指定一个额外的自动缩放信号。
该文档继续建议了一种解决方法:
要仅根据计划进行扩展,您可以将 CPU 利用率目标设置为 100%。
所以我做了。但随后托管组不会缩小到 0,它只是保持在 1。
我没用过Scale-in controls
,所以 AFAICT 唯一可以防止规模扩大的就是 10 分钟Stabilization period
,我已经考虑过了。
我的自动缩放器配置:
{
"name":"myname",
"target":"the/url",
"autoscalingPolicy":{
"minNumReplicas":0,
"maxNumReplicas":1,
"scalingSchedules":{
"out":{
"minRequiredReplicas":1,
"schedule":"0,20,40 * * * *",
"durationSec":300,
"description":"scale out"
}
},
"cpuUtilization":{
"utilizationTarget":1
}
}
}
计划本身将 5 分钟的横向扩展设置为 1 个实例,然后有 10 分钟的稳定时间,然后缩减为 0 应该发生,但事实并非如此。
如果我使用相同的配置,但仅更改maxNumReplicas=2
and minRequiredReplica=2
,自动缩放器确实在预期时间进行缩放,但在 1 到 2 个实例之间。我认为这意味着时间表本身没问题。
我的理论是cpuUtilization
信号阻止缩放到 0。有没有办法可以按计划在 0 和 1 之间缩放?也许是另一个信号,而不是cpuUtilization
?
Thanks!