我有一个单节点Kubernetes集群,它显示10Gi,3个CPU可用(总共16个Gi,4个CPU)运行豆荚后集群启动。因此,我正在尝试两种不同的方案:
Scenario-1.
Running 3 pods individually with configs(Request,Limit) as:
Pod-A: (1 Gi,3.3Gi) and (1 cpu,1 cpu)
Pod-B: (1 Gi,3.3Gi) and (1 cpu,1 cpu)
Pod-C: (1 Gi,3.3Gi) and (1 cpu,1 cpu)在这个场景中,应用程序在相应的吊舱中非常完美,运行良好。
Scenario-2.
Running 3 pods individually with configs(Request,Limit) as:
Pod-A: (1 Gi,10 Gi) and (1 cpu,3 cpu)
Pod-B: (1 Gi,10 Gi) and (1 cpu,3 cpu)
Pod-C: (1 Gi,10 Gi) and (1 cpu,3 cpu)在第二种情况下,应用程序会出现在相应的吊舱中,但是在这些吊舱上放置了一些负载后,即某个时间Pod-A下降,有时是Pod-2或Pod-3时,应用程序就会随机失败。在任何时候,我都不能把这三个吊舱都放在一起。
我在失败的吊舱中看到的唯一事件如下所示
"The warning which is available in node logs says "Warning CheckLimitsForResolvConf 1m (x32 over 15m) kubelet, xxx.net Resolv.conf file '/etc/resolv.conf' contains search line consisting of more than 3 domains**!.**".
由于日志中只有这些信息,我无法找出Pods随机故障的实际原因。
有没有人能帮我了解一下,如果我的吐露有什么问题,或者还有什么东西是我遗漏的?
谢谢
发布于 2020-02-11 10:49:26
创建Pod时,Kubernetes调度程序会为Pod选择要运行的节点。每个节点对于每种资源类型都有最大的容量:它可以为Pods提供的CPU和内存量。调度器确保,对于每种资源类型,调度容器的资源请求之和小于节点的容量。
Note虽然节点上的实际内存或CPU资源使用率很低,但如果容量检查失败,调度程序仍然拒绝在节点上放置Pod。这可以防止当资源使用增加时,例如在请求速率的日峰值期间,节点上的资源短缺。
因此,在调度容器超过其内存请求后,当节点耗尽内存时,很可能会将其Pod逐出
请参考默认硬驱逐阈值。
kubelet具有以下默认的硬驱逐阈值:
memory.available<100Mi
nodefs.available<10%
nodefs.inodesFree<5%
imagefs.available<15%当load运行时,您应该跟踪您的节点条件。
kubelet将一个或多个驱逐信号映射到相应的节点条件。
如果已达到硬驱逐阈值,或软驱逐阈值已达到独立于其相关宽限期的程度,kubelet报告了反映节点处于压力之下的条件,即MemoryPressure或DiskPressure。
https://stackoverflow.com/questions/60166802
复制相似问题