我正在kubernetes集群上运行同一应用程序的3个部署。最近,我开始为其中一种部署设置资源请求和限制。
resources:
limits:
cpu: 350m
memory: 225Mi
requests:
cpu: 250m
memory: 150Mi
设置这些设置后,与 2个未更改的部署相比,受影响的Pod的计算时间要长得多,据我所知,这对于Kubernetes文档没有任何意义。
通过运行kubectl top pods
,我可以确认Pod正在以请求的资源或更低的资源运行。当可视化计算时间(Prometheus + Grafana)时,很明显其中一种部署速度明显慢:
大约在60ms处进行两次部署,在大约120ms处进行一次
由于这是我所做的唯一更改,所以我不明白为什么会出现性能下降的情况。我想念什么吗?
删除cpu limit
,但保持request
可使pod性能恢复到应有的水平。请记住,这些Pod在CPU请求级别(大约250mCPU)上运行,该请求级别比限制低100mCPU。
其他信息:这些Pod正在运行NodeJS应用。
答案 0 :(得分:1)
Kubernetes的CPU限制可能无法正常运行。我建议从13:38开始观看this presentation。
解决k8中CPU限制的负面影响的一种方法可能是设置不同的CFS配额值。默认情况下,它设置为100ms,更好的值为5ms。与此相关的还有一个issue。
答案 1 :(得分:0)
没有任何请求和限制的Pod可能正在使用该节点的资源而没有任何限制。这样可以更快。
具有限制的豆荚将受到限制,因此它们可能变慢。
请检查两个部署的资源消耗指标。