Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
kubernetes资源请求/限制定义能否降低POD的速度?_Kubernetes_Kubernetes Helm - Fatal编程技术网

kubernetes资源请求/限制定义能否降低POD的速度?

kubernetes资源请求/限制定义能否降低POD的速度?,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,我在kubernetes群集上运行同一应用程序的3次部署。我最近开始为其中一个部署设置资源请求和限制 resources: limits: cpu: 350m memory: 225Mi requests: cpu: 250m memory: 150Mi 设置这些后,受影响的POD的计算时间比2个未更改的部署高得多,据我所知,这对于kubernetes文档是没有意义的 运行kubectl top pods允许我确认

我在kubernetes群集上运行同一应用程序的3次部署。我最近开始为其中一个部署设置资源请求和限制

resources:
    limits:
        cpu: 350m
        memory: 225Mi
    requests:
        cpu: 250m
        memory: 150Mi
设置这些后,受影响的POD的计算时间比2个未更改的部署高得多,据我所知,这对于kubernetes文档是没有意义的

运行
kubectl top pods
允许我确认我的pods在请求的资源或以下运行。当可视化计算时间(普罗米修斯+格拉法纳)时,很明显其中一种部署速度要慢得多:

约60毫秒时部署两次,约120毫秒时部署一次

由于这是我所做的唯一更改,我不明白为什么会出现性能下降。我错过什么了吗


编辑 取消cpu
限制
但保留
请求
会使pod性能恢复到预期水平。请记住,这些POD是在cpu请求级别(约250mCPU)下运行的,该级别比限制低100mCPU


附加信息:这些pod正在运行NodeJS应用程序。

没有任何请求和限制的pod可能在不受任何限制的情况下使用节点的资源。所以它可以更快

有限制的吊舱将受到限制,因此速度可能较慢


请检查这两种部署的资源消耗指标。

阅读此链接,我了解如果pod成功启动,容器保证请求的资源量,因此调度基于yaml中的requests字段,而不是limit字段,但POD及其容器将不允许超过yaml中指定的限制

如果吊舱超过其限制,将被节流。如果未指定限制,则POD可以在可用时使用多余的CPU。

请参阅链接以获取完整的阅读信息
库伯内特斯的CPU限制可能不会像人们想象的那样起作用。我建议从13:38开始看


k8s中CPU限制的负面影响的解决方案可能是设置不同的CFS配额值。默认设置为100ms,更好的值可能是5ms。关于这一点,还有一个问题。

无限制吊舱的CPU使用率略高(210 mCPU比200 mCPU)。但这仍然低于资源要求。另外,你能指出一些文件说库伯内特斯会限制吊舱的性能吗?我从来没有遇到过这样的情况。而且我的群集平均CPU很少超过60%,因此仍然有大量的资源剩余。排除这种可能性,您可以运行一个基于Java的进程,该进程知道Kubernetes的内存限制,从而限制其自身的堆大小;这会导致它执行更多的垃圾收集,并且运行速度通常较慢。您可能需要做一些更详细的调查才能真正理解这一点。@DavidMaze我正在运行NodeJS应用程序,我将查看GC过程,谢谢提示这是一个非常有趣的链接,谢谢!我感到惊讶的是,这被翻译为
一个容器在“主流”中可能被允许或不被允许超过其CPU限制
。一个容器可能被允许或不被允许在更长的时间内超过其CPU限制。但是,它不会因CPU过度使用而被杀死。我相信最后一行的读取不会被终止,而是转换为CPU的节流,让它运行,而不是终止。可能这可以在官方文档中更清楚地说明。。请参阅下面的文档链接,它确实提到了超过限制时的CPU节流。是的,我看到
容器的CPU使用被限制,因为容器试图使用超过其限制的CPU资源。
谢谢。不幸的是,这并不能解释为什么我的POD在低于或在
requestd
cpu的情况下运行时会被限制。感谢您提供本演示文稿的链接。您知道如何在新的kubernetes版本中设置CPU周期吗?我相信您可以通过如下所述为Kubernets设置
--CPU manager policy=static
来实现这一点:。你解决了这个问题吗?还有一个完整的演示: