GKE:如何使用CPU密集型初始化处理部署?

时间:2019-06-26 11:42:14

标签: spring-boot kubernetes google-kubernetes-engine autoscaling

我有一个GKE集群(n1-standard-1,主版本1.13.6-gke.13),其中有3个节点,在该节点上我有7个部署,每个部署都运行一个Spring Boot应用程序。为每个部署都创建了一个默认的Horizo​​ntal Pod Autoscaler,目标CPU为80%,最少有1/5个副本。

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

例如在集群升级后同时启动多个部署时,这通常会导致各种Pod不可计划,因为它们已耗尽CPU,并且某些Pod处于“ Preemting”状态。

我已经将HPA更改为最多2个副本,因为目前就足够了。但是我将来会添加更多的部署,很高兴知道如何正确处理此问题。我是Kubernetes和GCP的新手,所以我不确定该如何处理。

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

CPU usage

所有内容都在默认名称空间中运行,并且我没有用100m默认CPU请求来触及默认LimitRange。我应该修改它并设置限制吗?假设初始化需要资源,那么适当的限制是多少?还是我需要使用更多CPU来升级机器类型?

1 个答案:

答案 0 :(得分:3)

HPA only takes into account ready pods。由于您的Pod在早期阶段只会经历CPU使用率的高峰,因此最好的选择是配置一个readiness探针,该探针仅在CPU使用率下降或将InitialDelaySeconds设置为比启动时间长时才显示为就绪确保HPA不考虑CPU使用率的激增。