新增 Kubernetes 异常 Pod 清理脚本,支持一键清理多种异常状态的 Pod

This commit is contained in:
2026-02-14 02:33:17 +08:00
parent fc1ff34c10
commit c118523203

View File

@@ -0,0 +1,49 @@
#!/usr/bin/env bash
# 一键清理集群中常见异常状态的 Pod
# 会删除以下 STATUS 的 Pod
# - Evicted
# - Error
# - ImagePullBackOff
# - ContainerStatusUnknown
set -euo pipefail
STATUSES=("Evicted" "Error" "ImagePullBackOff" "ContainerStatusUnknown")
echo "======================================"
echo "Kubernetes 异常 Pod 清理脚本"
echo "======================================"
echo
for status in "${STATUSES[@]}"; do
# 过滤出该状态的 PodNAMESPACE NAME READY STATUS ...
MAPFILE -t pods < <(kubectl get pods -A 2>/dev/null | awk -v s="$status" '$4==s {print $1" "$2}')
if [[ ${#pods[@]} -eq 0 ]]; then
echo "[${status}] 无需清理"
continue
fi
echo "[${status}] 发现 ${#pods[@]} 个 Pod"
for line in "${pods[@]}"; do
echo " $line"
done
for line in "${pods[@]}"; do
ns=$(awk '{print $1}' <<<"$line")
name=$(awk '{print $2}' <<<"$line")
if [[ -z "$ns" || -z "$name" ]]; then
continue
fi
echo "删除 $ns/$name ..."
kubectl delete pod -n "$ns" "$name" --grace-period=0 --force || true
done
echo
done
echo "======================================"
echo "清理完成"
echo "======================================"
echo "提示Deployment/StatefulSet/DaemonSet 会自动重建对应 Pod如果存在"