如何解决当我在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
,这是不能超过的。
请求和限制是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
。 您可以使用这种方法并行处理批量工作。在本文档中,您可以找到带有工作方式说明的示例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。