Pod无法运行,资源不足

pio*_*iou 5 kubernetes

当我尝试使用十个副本部署一个部署时,出现此错误。

0/2节点可用:1内存不足,1个节点有豆荚不能忍受的污点。

我不明白为什么要两个节点。是同一节点又是同一问题。

我有很多可用的RAM(1GB)。

我如何解决此错误而无需添加另一个节点。

我在部署yaml文件中有以下资源:

限制:cpu:1000m内存:1000Mi请求:cpu:100m内存:200Mi

服务器:

  1. 主:

    CPU: 2
    RAM: 2 - 1 Free
    
    Run Code Online (Sandbox Code Playgroud)
  2. 奴隶:

    CPU: 2
    RAM: 2 - 1 Free
    
    Run Code Online (Sandbox Code Playgroud)

Ohm*_*men 7

我认为您在这里有多个问题。

首先了解错误消息的格式

0/2节点可用:1内存不足,1个节点有豆荚不能忍受的污点。

第一件事很清楚,您总共有2个节点,无法对其中任何一个进行调度。然后是阻止在该节点上进行调度的条件列表。一个节点可能会受到多个问题的影响。例如,内存不足和CPU不足。因此,这些数字的总和可能超过您在总节点数上得到的总和。

第二个问题是,您写入YAML文件的请求适用于每个副本。如果使用100M内存实例化同一容器5次,则它们总共需要500M。您要运行10个Pod,每个Pod需要200Mi的内存。因此,您需要2000Mi的可用内存。

您的错误消息已经暗示一个节点上没有足够的内存。我建议您通过检查两个节点,kubectl describe node <node-name>以找出Kubernetes可以“看到”多少空闲内存。Kubernetes总是阻塞Pod请求的全部内存,无论Pod使用了多少内存。

错误消息中的污点表明另一个节点(可能是主节点)具有污点,而该污点是部署所不能容忍的。有关污点和公差的更多信息,请参见文档。简而言之,找出节点上的哪个污点会阻止调度,并通过删除该污点kubectl taint nodes <node-name> <taint-name>-