GKE:如何处理 CPU 密集初始化的部署?

GKE: How to handle deployments with CPU intensive initialization?

我有一个 GKE 集群(n1-standard-1,主版本 1.13.6-gke.13),有 3 个节点,我有 7 个部署,每个 运行 一个 Spring 启动应用。为每个部署创建一个默认的 Horizo​​ntal Pod Autoscaler,目标 CPU 80% 和最少 1 个/最多 5 个副本。

在正常操作期间,每个部署通常有 1 个 pod,CPU 使用率为 1-5%。但是,当应用程序启动时,例如在执行滚动更新后,CPU 使用率达到峰值并且 HPA 扩展到最大副本数报告 CPU 使用率达到 500% 或更多。

当同时启动多个部署时,例如集群升级后,经常会导致各种pods因为超出CPU而无法调度,有些pods处于 "Preemting" 状态。

我已将 HPA 更改为最多 2 个副本,因为目前这已经足够了。但我将在未来添加更多部署,并且很高兴知道如何正确处理它。我对 Kubernetes 和 GCP 很陌生,所以我不确定如何处理这个问题。

这是今天早些时候集群升级后其中一个容器的 CPU 图表:

一切都在默认命名空间中运行,我没有用 100m 默认 CPU 请求触及默认 LimitRange。我应该修改它并设置限制吗?鉴于初始化需要大量资源,适当的限制是什么?还是需要升级机种更多CPU?

HPA only takes into account ready pods. Since your pods only experience a spike in CPU usage during the early stages, your best bet is to configure a readiness 探测器仅在 CPU 使用率下降或设置的 initialDelaySeconds 长于启动周期时才显示为就绪,以确保不会出现 CPU 使用率的峰值考虑到 HPA。