自动缩放需要更多时间来启动新 pod 并在 google 容器引擎中出现连接错误

Auto-scaling is taking more time to bring up new pod and giving connection error in google container engine

我使用以下命令进行自动缩放。

kubectl autoscale deployment catch-node --cpu-percent=50 --min=1 --max=10

在我的负载测试案例中,自动缩放的状态如下所示。

第27分钟

NAME         REFERENCE                     TARGET    CURRENT   MINPODS   MAXPODS   AGE
catch-node   Deployment/catch-node/scale   50%       20%      1         10        27m

NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
catch-node   1         1         1            1           27m

第 29 分钟

NAME         REFERENCE                     TARGET    CURRENT   MINPODS   MAXPODS   AGE
catch-node   Deployment/catch-node/scale   50%       35%      1         10        29m

NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
catch-node   1         1         1            1           29m

第 31 分钟

NAME         REFERENCE                     TARGET    CURRENT   MINPODS   MAXPODS   AGE
catch-node   Deployment/catch-node/scale   50%       55%      1         10        31m

NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
catch-node   1         1         1            1           31m

第34分钟

NAME         REFERENCE                     TARGET    CURRENT   MINPODS   MAXPODS   AGE
catch-node   Deployment/catch-node/scale   50%       190%      1         10        34m

NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
catch-node   4         4         4            4           34m

在这里,我在自动缩放时从 1 个 pod 过渡到 4 个 pods 之间的时间内收到连接拒绝错误。请让我知道一旦新 pods 超过自动缩放期间给出的 CPU % 限制需要多长时间。另外请让我知道有没有什么方法可以减少这个时间。一旦新 pods 出现,问题不存在。提前致谢

如本 doc 中所述,有两个因素会影响自动缩放器的反应时间:

  1. --horizontal-pod-autoscaler-sync-period,它定义了自动缩放器检查受控资源状态的频率。默认值为 30 秒。它可以通过控制器管理器的标志进行更改。

  2. upscaleForbiddenWindow,它定义了自动缩放器可以扩展资源的频率。默认值为 3 分钟。目前无法调整。

根据您粘贴的日志,如果负载稳定,autoscaler 应该会在 CPU 使用率达到 55% 后的 30 秒内做出反应,是这样吗?