我正在尝试将应用程序部署到我的Kubernetes集群中。它是一个多节点集群。有3 m4.2xlrge
aws实例。
m4.2xlarge
vCPU :- 8
Memory :- 32
现在,在该服务的deployment.yaml
文件中,我已经提到
limit:
cpu: 11
request:
cpu: 11
这是错误的,insufficient cpu
和容器没有调度。我已经有了(8*3)=24
CPU资源,我请求11
CPU退出它。它应该跨节点共享CPU资源。limit
和request
CPU是否适用于每个节点的容器?这意味着,每个aws实例至少应该有11
CPU吗?
发布于 2018-12-11 21:51:05
一个Pod被安排在一个节点上。资源requests:
帮助决定它可以在哪里被调度。如果您说是requests: {cpu: 11}
,那么必须有一些具有11个(非保留)核心的单个节点;但是如果您的集群只有8个核心m4.2xlarge节点,那么没有一个节点能够支持这一点。在这个级别上,Kubernetes不能以任何有用的方式“聚合”节点的核心。
如果您请求大量CPU,因为您的进程有很多线程要进行并发处理,请考虑将线程数量(甚至可能只有1个)调低,然后在部署规范中更改replicas:
以运行它的多个副本。每个单独的Pod都将被安排在一个节点上,但是有了许多副本,您将得到许多可以在这三个节点上传播的Pod。
如果您的进程确实需要8个以上的核心来运行,那么您需要有8个以上核心的单个系统;考虑一下m4.4xsize(相同的RAM与CPU的比率)或c4.4xlarge (相同的总RAM,是核心的两倍)。
发布于 2018-12-14 12:27:01
当为一个吊舱指定一个limit
或request
时,它会考虑到每个节点的CPU或内存容量。换句话说,不能有一个Pod请求在集群的单个工作节点上可用的更多的CPU或内存,如果这样做,它将处于Pending
状态,直到找到匹配Pod的request
的节点才会出现。
在您的示例中,大小为m4.2xlarge
的工作节点有8个vCPU,在部署文件中,您为Pod请求了11个vCPU。即使您有3个大小为m4.2xsize的节点,这也是行不通的。Pod总是在单个worker节点上调度,所以集群的总CPU容量是否超过11个vCPU并不重要,因为Pod只能从单个工作节点消耗资源。
希望这能有所帮助!
https://stackoverflow.com/questions/53732523
复制相似问题