云原生 | k8s批量删除Evicted/Terminating/Unknown Pods

宿主机内存被docker占满导致,K8s集群pod处于Evicted 状态,清理内存后处理Evicted和Terminating状态的pod

1、在集群查询pod状态,发现大量pod处于Evicted和Terminating状态

2.使用kubectl中的强制删除命令

kubectl delete pod nginx -n mmp --force --grace-period=0

3.删除非正常的pod

a.查询出所有要删除的podName
kubectl get po | grep Unknown | awk '{print $1}'
b.批量删除
kubectl delete pod `kubectl get po | grep Unknown | awk '{print $1}'` --force --grace-period=0
或者
kubectl get pods -n prod| grep Evicted | awk '{print $1}' | xargs kubectl delete pod  -n prod
 
c. 删除所有异常的pods
kubectl -n platform delete pod `kubectl get po --all-namespaces=true | grep 'Evicted\|Terminating\|Unknown' | awk '{print $1}'` --force --grace-period=0


 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在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、付费专栏及课程。

余额充值