测试环境有一台宿主机出现了异常,大量的异常日志导致宿主机的磁盘使用率超过了85%,触发了上面的pod驱离策略,该宿主机上的的pod处于Evicted状态。在清理了磁盘之后,得手动处理掉这些Evicted状态的pod。
查看了下该状态的pod数目有50+,一条条的删除到猴年马月,写个shell脚本批量处理下。
这是一个简单的shell脚本参考,抛砖引玉。
#!/bin/bash## 获取当前状态为Evicted的pod## 并输出到一个临时文件内## 这是输出的文件按制表符tab键间隔#kubectl get pods --all-namespaces | awk '/Evicted/ {print $1 "\t" $2}' > evicted_pods.txt## 这是输出的文件按空格符间隔kubectl get pods --all-namespaces | awk '/Evicted/ {print $1 " " $2}' > evicted_pods.txt## 这是按空格示例,截取文本解析成字段:命名空间和pod名while IFS=' ' read -r namespace pod_name; do## 这是按制表符tab键示例,截取文本解析成字段#while IFS=$'\t' read -r namespace pod_name; do ## 验证命名空间和 Pod 名称是否存在 if [[ ! -z "$namespace" && ! -z "$pod_name" ]]; then echo "kubectl delete pod $pod_name -n $namespace:" kubectl delete pod "$pod_name" -n "$namespace" fidone < evicted_pods.txt## 可选是否清理临时文件rm -f evicted_pods.txt同理我们可以用来清理状态为Failed的pod。