当我创建一个Pod时,由于没有节点具有足够的CPU来满足Pod的CPU请求而无法对其进行调度,kubectl describe pod/...
的事件输出包含类似No nodes are available that match all of the following predicates:: Insufficient cpu (3)
的消息。Insufficient cpu (3)
中的(3)
是什么意思?
例如,如果我尝试创建一个请求24个CPU的pod,而我的所有节点只有4个CPU:
$ kubectl describe pod/large-cpu-request
Name: large-cpu-request
Namespace: default
Node: /
Labels: <none>
Annotations: <none>
Status: Pending
IP:
Controllers: <none>
Containers:
cpuhog:
...
Requests:
cpu: 24
...
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
23m 30s 84 default-scheduler Warning FailedScheduling No nodes are available that match all of the following predicates:: Insufficient cpu (3).
在其他时候,当pod的资源请求太高时,我会看到类似No nodes are available that match all of the following predicates:: Insufficient cpu (2), PodToleratesNodeTaints (1)
的事件消息,所以3看起来不像是一个常数,也不像是与我的24 CPU请求相关。
2条答案
按热度按时间falq053o1#
这意味着您的Pod不适合3个节点,因为CPU不足,1个节点,因为taints(可能是主节点)。
kognpnkq2#
当Pod请求的CPU多于集群中的CPU时,无法对其进行调度。例如,如果您有8个Kubernetes CPU(请参阅本页计算您拥有的Kubernetes CPU数量),并且如果您现有的Pod已经消耗了这么多CPU,那么你不能安排更多的pod,除非你的一些现有的pod在你请求安排一个新的pod的时候被杀死。水平Pod自动分频器(HPA)可以遵循以下简单公式:
资源请求CPU * HPA最大PODS〈=总Kubernetes CPU
你可以随时调整这些数字。在我的例子中,我调整了my manifest文件的资源请求CPU。所以它可以是200m或1000m(= 1 Kubernetes CPU)。