k8s 删除异常资源

整理 k8s 中的删除

# 常规删除
kubectl delete pod <pod-name>

# 使用 patch 删除
kubectl patch pod <pod-name> -n <namespace> -p '{"metadata":{"finalizers":null}}' --type=merge

# 删除处于 Terminating 状态的 namespace
# 方法一:(推荐)
(
NAMESPACE=your-rogue-namespace
kubectl proxy &
kubectl get namespace $NAMESPACE -o json |jq '.spec = {"finalizers":[]}' >temp.json
curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json 127.0.0.1:8001/api/v1/namespaces/$NAMESPACE/finalize
)

# 方法二:
ns=namespace
cat > namespace.json <<EOF
{
    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
        "name": "${ns}",
        "selfLink": "/api/v1/namespaces/${ns}/finalize"
    },
    "spec": {},
    "status": {
        "phase": "Terminating"
    }
}
EOF

kubectl replace --raw "/api/v1/namespaces/${ns}/finalize" -f ./namespace.json