Node节点磁盘空间不足导致的Pod频繁Evicted

文章讲述了在Kubernetes集群中由于Node节点磁盘空间不足导致Pod频繁被Evicted的问题。通过排查和使用kubectl命令,找到并清理占用大量空间的日志文件,从而解决了问题。此外,还讨论了PodEviction的原因,包括资源不足、存储问题和节点问题,并提出了调整资源需求、检查存储和节点状态的解决方案。
摘要由CSDN通过智能技术生成

背景

在我们公司的Kubernetes集群中,最近经常遇到一些Pod频繁Evicted的问题。这个问题困扰了我们好一段时间,直到我发现问题的根源是因为Node节点的磁盘空间不足。

排查思路

我首先使用kubectl describe pod 命令来查看Pod Evicted的详细信息,发现Pod被Evicted的原因是Node节点磁盘空间不足。这导致Pod的容器无法启动,并最终被Evicted掉
在这里插入图片描述

解决方式

我们开始尝试解决这个问题。首先,通过以上的kubectl describe pod命令可以看到该pod是被ip为89的节点驱逐的。
然后我通过kubectl get po -A -o wide| grep Evicted 所有的evicted都发生在89 这台node.

登录到89这个node后可以看到磁盘空间的确很紧张
在这里插入图片描述
接着,我找到了这个占用大量空间的pod日志
在这里插入图片描述
这是pod运行时日志输出的地方,它会挂载到node节点的某个路径上.可以通过kubectl describe pod 查看目录挂载位置.很自然的 我回到master上通过pod名称去找这个pod. 但是确没有发现.联想到之前发生过pod一致处于terminating状态 最后强制删除的情况.可能是这种操作删除了pod信息但是没有删除对应的卷(Volume).
果断删除这个pod日志并找到其他没有对应pod但是有pod日志的文件夹清理后. 没有在出现Evicted的情况.

问题拓展

在Kubernetes中,Pod是最小的工作单元,它是由一个或多个容器组成的。Pod在节点上运行,且有一个生命周期。当Pod中某个容器出现故障或超出其资源限制时,该Pod可以被终止并重新创建。这种重新创建Pod的过程称为Eviction。

describe命令

在Kubernetes中,当一个Pod被evicted时,可以通过以下命令查看它的状态描述:

kubectl describe pod <pod-name>

该命令将显示Pod的详细信息,包括状态描述。例如,如果Pod因资源不足而被Evicted,则输出的状态可能类似于以下内容:

Events:
Type      Reason  Age   From                Message
----      ------  ----  ----                -------
Normal    Pulled  10m   kubelet, node-1     Container image "nginx:latest" already present on machine
Normal    Created 10m   kubelet, node-1     Created container nginx
Normal    Started 10m   kubelet, node-1     Started container nginx
Warning   Evicted 5m    kubelet, node-1     The node was low on resource: memory. Container nginx was using 600Mi, which exceeds its request of 256Mi.

注意,Warning Evicted 行表示Pod已被Evicted,而 The node was low on resource 表示Pod的Eviction是由于节点资源不足而引起的。在这个例子中,Pod中的 nginx 容器的内存使用量为 600Mi,而其只申请了最少的256Mi ,因此被Evicted。

如果您的Pod频繁被Evicted,则可能存在以下问题:

- 内存或CPU不足:

Pod所需的资源超出了节点的可用资源。这可能是因为Pod中的容器使用了大量的资源,或者您的应用程序需要更多的资源。

- 存储问题:

如果Pod使用的存储资源不足,也可能会出现频繁的Eviction问题。这可能是因为存储已满或存储资源不足,以及存储崩溃或故障等。

- 节点问题:

您的节点可能存在问题,如硬件故障、网络分区、节点宕机等。

解决方案:

如果您的Pod频繁被Evicted,您可以尝试以下解决方案:

  • 调整Pod所需的资源量:您可以检查Pod所需的资源(CPU、内存)是否适合节点,并根据需要调整Pod的资源量。您可以通过使用Kubernetes的资源限制和请求来控制Pod使用的资源。
  • 检查存储:您可以通过检查存储配置文件,确保Pod有足够的存储空间。
  • 检查节点:您可以检查节点是否存在故障,并尝试重新启动节点或迁移Pod。

总之,Pod频繁被Evicted可能意味着您的应用程序存在某些问题或资源配置不足,您需要仔细检查和调整它们,以确保Pod能够正常运行并保持稳定

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值