当前位置: 首页 > 知识库问答 >
问题:

为什么Kubernetes豆荚在其极限重叠时会随机失败?

祖浩淼
2023-03-14

我有一个单节点库伯内特斯集群,它显示10Gi,3个CPU可用(总共16 Gi,4CPU),用于在集群启动后运行pod。我正在尝试两种不同的场景:

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中,但在这些Pod上加载一些负载后会随机失败,即有时Pod-A会出现故障,有时Pod-2或Pod-3会出现故障。在任何时候,我都无法同时运行所有三个吊舱。

我在失败的吊舱中看到的唯一事件如下

"在节点日志中可用的警告说"Warning CheckLimitsForResolvConf1m(x32 over15m)kubelet,xxx.netResolv.conf文件'/etc/resolv.conf'包含由3个以上域组成的搜索行!."。

日志中只有这些信息,我无法找出POD随机失效的实际原因。

是否有人能帮助我了解配置是否有任何问题,或者我是否遗漏了其他内容?

谢谢

共有1个答案

王波
2023-03-14

创建Pod时,Kubernetes调度程序会选择一个节点,供Pod在其上运行。每个节点对于每种资源类型都有一个最大容量:它可以为POD提供的CPU和内存量。调度程序确保,对于每种资源类型,调度容器的资源请求之和小于节点的容量。

注意:尽管节点上的实际内存或CPU资源使用率非常低,但如果容量检查失败,调度程序仍然拒绝在节点上放置Pod。这可以防止在稍后资源使用率增加时(例如,在每天的请求速率峰值期间)节点上出现资源短缺。

因此,在调度之后,如果容器超出了其内存请求,则每当节点内存不足时,其Pod可能会被逐出

请参阅默认硬驱逐阈值值。

kubelet具有以下默认硬逐出阈值:

memory.available<100Mi
nodefs.available<10%
nodefs.inodesFree<5%
imagefs.available<15%

加载运行时,您应该跟踪节点条件。

kubelet将一个或多个逐出信号映射到相应的节点条件。

如果已满足硬逐出阈值,或已满足软逐出阈值(与相关宽限期无关),则kubelet会报告一种反映节点处于压力下的情况,即内存压力或磁盘压力

 类似资料:
  • 环境*Kubernetes 1.9.3*使用在AWS(专用网络拓扑)上运行的kops(V1.8)创建的集群*网络:weave-net*集群:1主,3节点 事件实例时间线 > 我们已经使用kops执行了滚动集群更新,以使用我们构建的新AMI(基于kops AMI k8s-1.8-debian-jessie-amd64-hvm-ebs-2017-11-27)启动节点和主机。调整kops AMI从来都不

  • 我有一个编织网络插件。 我的wave pod正在运行,dns pod也在运行,但是当我想像一个简单的nginx一样运行pod时,wich会拉一个nginx图像pod卡在容器创建中,描述pod给我错误,创建pod沙箱失败。 当我运行journalctl-u kubelet时,我得到以下错误 我的网络插件配置不好吗? 在这不起作用之后,我也尝试了这个命令 我甚至试过法兰绒,这给了我同样的错误。我给ku

  • PostgreService.yaml 已创建服务的终结点为 然后我在pod(kubectl exec-it mark-dummy-pod bash)内运行ping172.31.6.149,但不工作。(ping localhost正在工作)

  • 我们有一个应用程序,其中包含 4 个 pod,并使用负载均衡器运行!我们想尝试滚动更新,但我们不确定当 Pod 出现故障时会发生什么!文档不清楚!特别是《豆荚的终止》中的这句话: Pod将从服务的endpoint列表中删除,并且不再被视为复制控制器的运行Pod集的一部分。缓慢关闭的Pod可以继续为流量提供服务,因为负载平衡器(如服务代理)将它们从轮换中删除。 因此,如果有人能在以下问题上指导我们:

  • 我在一个有3个节点的kubernetes集群上运行nginx。 我想知道是否有任何好处,例如,有4个豆荚和限制他们的CPU/MEM约。节点容量的1/4相对于每个节点运行一个pod,限制CPU/MEM,以便pod可以使用整个节点的资源(为了简单起见,我们将cubernet服务排除在等式之外)。 我的感觉是,豆荚越少,开销就越小,每个节点使用1个豆荚应该是性能最好的? 提前致谢

  • 以下是两位工作人员的日志,这将有助于强调这个问题: 工人-0: 工人2: