当我在谷歌上搜索时,有一些答案说,在kubernetes中,100ms的cpu意味着你将使用一个cpu核心的1/10倍,2300ms的cpu意味着您将完全使用两个核心和另一个cpu核的3/10倍。这是正确的吗?
我只是想知道在kubernetes中使用1000ms以下的cpu请求时,多个线程是否可以同时在多个内核上并行运行。
关于第一部分,确实可以使用部分CPU资源来运行一些任务。在Kubernetes文档-管理容器的资源中,您可以找到可以指定最低资源需求的信息-运行pod的requests
和不能超过的limits
。
在这篇文章中有很好的描述
请求和限制是Kubernetes用来控制CPU和内存等资源的机制。请求是容器保证得到的。如果容器请求资源,Kubernetes将只在能够为其提供资源的节点上对其进行调度。限制,另一方面,确保容器永远不会超过某个值。容器只允许上升到极限,然后就受到限制。
CPU请求/限制:
CPU资源以毫核为单位定义。如果您的容器需要两个完整的核心来运行,您可以将值设置为
2000m
。如果您的容器只需要¼个核心,那么您将设置值250m
。关于CPU请求,需要记住的一点是,如果您输入的值大于最大节点的核心计数,那么您的pod将永远不会被调度。
关于第二部分,您可以并行使用多个线程Kubernetes Job就是一个很好的例子。
一个简单的例子是创建一个Job对象,以便可靠地运行一个Pod。如果第一个Pod失败或被删除(例如,由于节点硬件故障或节点重新启动(,Job对象将启动新的Pod。您也可以使用一个作业并行运行多个Pod。
特别是关于作业的并行执行的部分
您也可以使用Expansions检查并行处理,以基于公共模板运行多个Jobs
您可以使用此方法并行处理一批批工作在本文档中,您可以找到有关其工作原理的示例。