From c118523203b49c323edc8ac37ea3e5ea72e15d51 Mon Sep 17 00:00:00 2001 From: abearixong Date: Sat, 14 Feb 2026 02:33:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20Kubernetes=20=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=20Pod=20=E6=B8=85=E7=90=86=E8=84=9A=E6=9C=AC=EF=BC=8C?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=B8=80=E9=94=AE=E6=B8=85=E7=90=86=E5=A4=9A?= =?UTF-8?q?=E7=A7=8D=E5=BC=82=E5=B8=B8=E7=8A=B6=E6=80=81=E7=9A=84=20Pod?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/scripts/cleanup-bad-pods.sh | 49 +++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 k8s/scripts/cleanup-bad-pods.sh diff --git a/k8s/scripts/cleanup-bad-pods.sh b/k8s/scripts/cleanup-bad-pods.sh new file mode 100644 index 0000000..098dd9d --- /dev/null +++ b/k8s/scripts/cleanup-bad-pods.sh @@ -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 + # 过滤出该状态的 Pod(NAMESPACE 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(如果存在)"