Kubernetes 多节点集群中 cpu 不足
Insufficient cpu in Kubernetes multi node cluster
我正在尝试将应用程序部署到我的 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 吗?
Pod 被安排在单个节点上。资源 requests:
帮助决定它可以安排在哪里。如果你说 requests: {cpu: 11}
那么一定有一些单节点有 11 个(未预留的)可用核心;但如果您的集群只有 8 核 m4.2xlarge 节点,则没有单个节点能够支持这一点。 Kubernetes 无法在此级别以任何有用的方式跨节点“聚合”核心。
如果您请求很多 CPU 因为您的进程有很多线程来进行并发处理,请考虑降低线程数(甚至可能只有 1 个),然后更改 replicas:
在部署规范中 运行 它的许多副本。每个单独的 Pod 将被安排在一个节点上,但是如果有很多副本,你会得到很多 Pods,它们可以分布在三个节点上。
如果您的进程确实需要 8 个以上的内核才能 运行,那么您需要具有 8 个以上内核的单个系统;考虑 m4.4xlarge(相同的 RAM-to-CPU 比率)或 c4.4xlarge(相同的总 RAM,两倍的内核)。
当您为 pod 指定 limit
或 request
时,它会考虑每个节点的容量 CPU 或内存。换句话说,您不能让 Pod 请求更多 CPU 或集群的单个工作节点上可用的内存,如果这样做,它将进入 Pending
状态,直到它找到一个与 Pod 的 request
匹配的节点。
在您的例子中,大小为 m4.2xlarge
的工作节点有 8 个 vCPU,并且在部署文件中您为 Pod 请求了 11 个 vCPU。即使您有 3 个大小为 m4.2xlarge 的节点,这也永远不会起作用。 Pod 总是被安排在单个工作节点上,因此集群的总 CPU 容量是否超过 11 vCPUs 并不重要,因为 Pod 只能使用来自单个工作节点。
希望对您有所帮助!
我正在尝试将应用程序部署到我的 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 吗?
Pod 被安排在单个节点上。资源 requests:
帮助决定它可以安排在哪里。如果你说 requests: {cpu: 11}
那么一定有一些单节点有 11 个(未预留的)可用核心;但如果您的集群只有 8 核 m4.2xlarge 节点,则没有单个节点能够支持这一点。 Kubernetes 无法在此级别以任何有用的方式跨节点“聚合”核心。
如果您请求很多 CPU 因为您的进程有很多线程来进行并发处理,请考虑降低线程数(甚至可能只有 1 个),然后更改 replicas:
在部署规范中 运行 它的许多副本。每个单独的 Pod 将被安排在一个节点上,但是如果有很多副本,你会得到很多 Pods,它们可以分布在三个节点上。
如果您的进程确实需要 8 个以上的内核才能 运行,那么您需要具有 8 个以上内核的单个系统;考虑 m4.4xlarge(相同的 RAM-to-CPU 比率)或 c4.4xlarge(相同的总 RAM,两倍的内核)。
当您为 pod 指定 limit
或 request
时,它会考虑每个节点的容量 CPU 或内存。换句话说,您不能让 Pod 请求更多 CPU 或集群的单个工作节点上可用的内存,如果这样做,它将进入 Pending
状态,直到它找到一个与 Pod 的 request
匹配的节点。
在您的例子中,大小为 m4.2xlarge
的工作节点有 8 个 vCPU,并且在部署文件中您为 Pod 请求了 11 个 vCPU。即使您有 3 个大小为 m4.2xlarge 的节点,这也永远不会起作用。 Pod 总是被安排在单个工作节点上,因此集群的总 CPU 容量是否超过 11 vCPUs 并不重要,因为 Pod 只能使用来自单个工作节点。
希望对您有所帮助!