【k8s】状态为 Evicted 的 Pod

背景

在查看k8s的环境的时候,突然发现存在n多个pod状态为Evicted。差不多得有几百个。

 

解决 

同事愉快的丢了个链接给我,让我自己看一波:What will happen to evicted pods in kubernetes?

查看了一下pod的信息。结果发现是磁盘满了。

kubectl describe pod {pode_name} -n {namespace}

但是得手动删除Evicted状态的pod

kubectl get pods --all-namespaces -o json |
 jq '.items[] |
 select(.status.reason!=null) |
 select(.status.reason |
 contains("Evicted")) |
 "kubectl delete pods \(.metadata.name) -n \(.metadata.namespace)"' |
 xargs -n 1 bash -c

将Evicted状态的pod删除后,清理一波磁盘。

du -h --max-depth=1    //查看当前目录,哪个文件占用最大

du -sh *   //查看当前目录下各文件及文件夹占用大小

cp /dev/null a.log   //将a.log文件清除为空

 最后k8s上的服务显示正常了。

Kubernetes中,当节点面临资源压力时,可能会触发Pod驱逐(Eviction)的机制。Pod驱逐是指将一些Pod从节点上驱逐出去,以释放资源给其他Pod使用。驱逐的条件和策略可以通过Kubelet的配置进行设置。 根据引用的资料,可以通过配置Kubelet的eviction参来控制Pod的驱逐行为。Kubelet的配置文件中可以设置eviction的硬阈值、软阈值、软阈值宽限期和最小回收量等参。当节点资源使用超过这些阈值时,Kubelet会根据驱逐策略来选择性地将一些Pod驱逐出去。 根据引用的描述,如果在重启Kubernetes集群的某个节点的Docker之后,发现大多Pod状态evicted,那么很可能是由于节点面临资源压力导致的。这可能是因为在节点重启后,资源消耗较大的Pod被驱逐出去,以保证节点的正常运行。 根据引用的代码片段,调用ParseThresholdConfig函可以解析用户配置的阈值参。这些阈值参用于配置Pod驱逐的条件。在Kubelet的配置中,可以设置硬阈值、软阈值、软阈值宽限期和最小回收量等参。这些参可以根据实际需求进行调整,以适应集群的资源管理策略。 综上所述,k8s Evicted是指在Kubernetes集群中,当节点面临资源压力时,Kubelet会根据配置的阈值参选择性地将一些Pod驱逐出去,以释放资源给其他Pod使用。节点重启后,如果发现大多Pod状态evicted,那么可能是因为节点资源不足导致的驱逐行为。可以通过调整Kubelet的配置来控制Pod的驱逐行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值