当我在kubernetes中使用1000m以下的CPU请求时,同一容器中的多个线程可以同时使用多个内核并行运行吗?

问题描述

当我用google搜索时,有一些答案说在kubernetes中,100ms cpu意味着您将使用1/10时间的一个cpu内核,而2300ms cpu意味着您将完全使用2个内核,而3 /另一个CPU核心的10倍。正确吗?

我只是想知道,当在kubernetes中使用1000ms以下的CPU请求时,多个线程是否可以同时在多个内核上并行运行。

解决方法

关于第一部分,确实可以使用一部分CPU资源来运行某些任务。 在Kubernetes documentation - Managing Resources for Containers中,您可以找到可以指定最低资源要求的信息-requests以运行pod和limits,这是不能超过的。

this article

中有很好的描述

请求和限制是Kubernetes用于控制CPU和内存等资源的机制。请求是保证容器得到的东西。如果容器请求资源,Kubernetes只会在可以分配该资源的节点上调度它。另一方面,限制确保容器永远不会超过特定值。只能使容器上升到极限,然后再对其进行限制。

CPU请求/限制:

CPU资源以毫米为单位定义。如果您的容器需要两个完整的内核才能运行,则应输入值2000m。如果您的容器仅需要1/4核,则可以输入250m的值。 关于CPU请求,要记住的一件事是,如果您输入的值大于最大节点的核心数量,则将永远不会调度pod。

关于第二部分,您可以并行使用多个线程。很好的例子是Kubernetes Job

一种简单的情况是创建一个Job对象,以可靠地运行一个Pod来完成。如果第一个Pod发生故障或被删除(例如,由于节点硬件故障或节点重启),则Job对象将启动一个新的Pod。 您还可以使用Job并行运行多个Pod。

特别是关于Parallel execution for Jobs

的一部分

您还可以选中Parallel Processing using Expansions以基于通用模板运行多个Jobs您可以使用这种方法并行处理批量工作。在本文档中,您可以找到带有工作方式说明的示例。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...