当我尝试部署具有十个副本的部署时,出现此错误。
0/2 nodes are available: 1 Insufficient memory, 1 node(s) had taints that the pod didn't tolerate.
我不明白为什么要两个节点。是相同的节点,只是相同的问题。
我有很多可用的RAM(1GB)。
我如何解决此错误,而无需添加另一个节点。
我在部署yaml文件中有以下资源:
限制:
cpu:1000m
内存:1000Mi
要求:
cpu:100m
内存:200Mi
服务器:
CPU: 2
RAM: 2 - 1 Free
CPU: 2
RAM: 2 - 1 Free
最佳答案
我认为您在这里有多个问题。
首先了解错误消息的格式
0/2 nodes are available: 1 Insufficient memory, 1 node(s) had taints that the pod didn't tolerate.
第一件事很清楚,您总共有2个节点,无法对其中任何一个节点进行调度。然后是阻止在该节点上进行调度的条件列表。一个节点可能会受到多个问题的影响。例如,内存不足和CPU不足。因此,这些数字的总和可能超过您在总节点数上得到的总和。
第二个问题是,您写入YAML文件的请求适用于每个副本。如果使用100M内存实例化同一容器5次,则它们总共需要500M。您要运行10个Pod,每个Pod都需要200Mi的内存。因此,您需要2000Mi的可用内存。
您的错误消息已经暗示一个节点上没有足够的内存。我建议您通过
kubectl describe node <node-name>
检查两个节点,以找出Kubernetes可以“看到”多少空闲内存。 Kubernetes总是阻塞Pod所请求的全部内存,而不管该Pod使用了多少内存。错误消息中的污点表明另一个节点(可能是主节点)具有污点,而该污点是部署所不能容忍的。有关污点和公差的更多信息,请参见documentation。简而言之,找出节点上哪个污点妨碍了调度,并通过
kubectl taint nodes <node-name> <taint-name>-
将其删除。
关于kubernetes - Pod无法运行,资源不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53192999/