kubernetes - Pod无法运行,资源不足

标签 kubernetes

当我尝试部署具有十个副本的部署时,出现此错误。

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/

    相关文章:

    docker - kubernetes 复制 Controller

    Kubernetes 仪表板 CrashLoopBackOff,出现错误 "connect: no route to host",我该如何解决?

    kubernetes - 使用 Kubernetes 的钩子(Hook)

    kubernetes - 在注释中使用 ingressClassName 而不是 kubernetes.io/ingress.class 时,ingress-nginx 不起作用

    docker - 如何通过 kubernetes pod 传递 docker run 参数

    kubernetes - Puppet kubernetes 模块

    ssh - 将远程Docker实例挂载到我的OSX文件系统

    kubernetes - 使用特定命令启动 kubernetes 容器

    kubernetes - 启动 minikube 时是否可以挂载多个卷?

    Kubernetes 容器环境