批量处理k8s中的异常pod

417 阅读1分钟

今年双十一阿里云玩high了,不仅自己服务挂了,我们这些租用阿里云的企业也手动波及。周末收到一大堆集群报警信息,打开k8s一看,superise,几千个pod显示Evicted状态。虽然服务都自动拉起了,但是这些异常信息留着不会自动清理,非常恶心。不管从页面删,还是写命令一条一条删都非常费力。因此百度了一下,利用管道命令批量删除pod,统一清理干净。

  • Evicted可使用kubectl中的强制删除命令
# 打印指定命名空间下的所有Evicted  的 pod
kubectl get pods -n  namespace | grep Evicted | awk '{print $1}'

## 发现有很多 “Evicted” 状态的pod

## 问题原因:这是由于node节点的资源不够(CPU、磁盘、内存被占用),将现有的pod进行了驱逐。

# 批量删掉pod
kubectl get pods -n  namespace  | grep Evicted | awk '{print $1}' | xargs kubectl delete pods  -n  namespace


批量删除所有“Evicted”状态的pod即可

# 执行完成后,检查是否删除所有Evicted状态的pod
kubectl   get pods   -n  namespace


  • OutOfCpu可使用kubectl中的强制删除命令
# 打印指定命名空间下所有OutOfCpu 的 pod
kubectl get pods -n  namespace  | grep OutOfcpu | awk '{print $1}'
 
# 批量删掉pod
kubectl get pods -n  namespace | grep OutOfcpu | awk '{print $1}' | xargs kubectl delete pod -n  namespace


批量删除所有“OutOfcpu ”状态的pod即可

# 执行完成后,检查是否删除所有OutOfcpu 状态的pod
kubectl   get pods   -n  namespace


  • Terminating可使用kubectl中的强制删除命令
# 删除POD
kubectl delete pod PODNAME  -n  namespace --force --grace-period=0 
 
# 删除NAMESPACE
kubectl delete namespace NAMESPACENAME --force --grace-period=0


本文使用 文章同步助手 同步