我们尝试在计划在4个节点和1个主节点集群上部署的现有Pod组合中添加另外2个Pod的部署。我们收到以下错误: 没有与所有谓词匹配的节点可用:cpu不足(4),内存不足(1),PodToleratesNodeTaints(2)。
查看其他线程和文档,当现有节点超过cpu容量(在4个节点上)和内存容量(在1个节点上)时就是这种情况...
为解决资源问题,我们添加了另一个节点并重新部署了这些位。但是仍然看到相同的问题,并且看到几乎未使用的节点。 (请参阅下面的节点5,但当节点2和节点4被过度分配时,在添加失败的新容器之后,节点1和3将被过度分配)
节点名| CPU请求(核心)| CPU限制(核心)|记忆体要求 (字节)|内存限制(字节)|年龄
node-5 | 0.11(5.50%)| 0(0.00%)| 50英里(1.26%)| 50英里(1.26%)| 3 小时
node-4 | 1.61(80.50%)| 2.8 (140.00%) | 2.674 Gi(69.24%)| 4.299吉 (111.32%) | 7天
node-3 | 1.47(73.50%)| 1.7 (85.00%) | 2.031 Gi(52.60%)| 2.965吉 (76.78%)| 7个月
node-2 | 1.33(66.50%)| 2.1 (105.00%) | 2.684 Gi(69.49%)| 3.799吉 (98.37%)| 7个月
node-1 | 1.48(74.00%)| 1.4 (70.00%) | 1.705 Gi(44.15%)| 2.514焦耳 (65.09%)| 7个月
主| 0.9(45.00%)| 0.1(5.00%)| 350英里(8.85%)| 300英里(7.59%) | 7个月
请注意,我们已启用自动缩放(限制为8个节点)。 (客户端版本为v1.9.0,而我们的kubernetes服务器版本为v1.8.4)。我们正在使用头盔进行部署,并使用kops添加新节点。
为什么没有安排Pod,以便每个节点的容量都低于容量?为什么会看到错误和一个完全未使用的节点?
答案 0 :(得分:0)
弄清楚发生了什么。这是我们认为发生了什么...
污染:ToBeDeletedByClusterAutoscaler = 1532321512:NoSchedule
然后我们使用最小= 5和最大= 8的新值重新部署自动缩放器。
然后我们移除了此污点并重新部署,第5个节点未被利用的问题就消失了。因此,现在有足够的节点资源,因此我们没有收到所得到的错误。
不确定为什么自动缩放器会用此污点标记新节点。这是另一天的问题,或者可能是k8s自动定标器中的错误。但是,该问题已通过在新节点上删除该污点而解决。