banner
NEWS LETTER

Kubernetes强制删除资源

Scroll down

本文作者:丁辉

Kubernetes强制删除资源

卸载 Mount 挂载

1
umount $(mount | grep /var/lib/kubelet/pods | awk '{print $3}')

强制删除 Pod

指定你的 Pod 名称

1
POD_NAME=
  • 强制删除 Terminating Pod

    1
    kubectl delete pod ${POD_NAME} --force
  • 立刻终止并强制删除 Terminating Pod

    1
    kubectl delete pod ${POD_NAME} --grace-period=0 --force
  • 通过修改系统参数删除 Terminating Pod(仅Centos)

    通过设置 fs.may_detach_mounts=1 , Linux内核可以允许卸载这些挂载点,即使它们仍然被一些进程占用。

    1
    sysctl -w fs.may_detach_mounts=1
  • 通过修改 finalizers 删除 Terminating Pod

    当你删除一个资源(比如 Pod)时,Kubernetes 会将该资源的 finalizers 字段设置为一个非空的数组,这些 finalizers 是用来执行删除操作的一系列步骤。一旦这些步骤全部完成,Kubernetes 就会将资源完全删除。但是,有时候 Pod 可能会被卡在 Terminating 状态,无法正常删除,这可能是因为某些 finalizers 的执行未能成功完成,从而导致 Pod 无法被删除。

    1
    kubectl patch pod ${POD_NAME} -p '{"metadata":{"finalizers":null}}'

强制删除当前 Namespace 下所有 Pvc Pv

  • 设置变量

    1
    export YOURNAMESPACE=你的名称空间
  • 删除 Pvc

    1
    for line in  $(kubectl get pvc -n $YOURNAMESPACE | awk ' NR > 1{print $1}') ;do  kubectl delete pvc  $line  -n $YOURNAMESPACE ; echo $line; done
  • 删除 Pv

    1
    for line in  $(kubectl get pv -n $YOURNAMESPACE | awk ' NR > 1{print $1}') ;do  kubectl delete pv  $line  -n $YOURNAMESPACE ; echo $line; done
  • 若发现 Pv 还是删除不了

    1
    for line in  $(kubectl get pv -n $YOURNAMESPACE | awk ' NR > 1{print $1}') ;do  kubectl patch pv $line -p '{"metadata":{"finalizers":null}}' -n $YOURNAMESPACE ; kubectl delete pv  $line  -n $YOURNAMESPACE ;echo $line; done

强制删除 Namespace

方法一

  • 先手动强制删除试试

    1
    kubectl delete ns $YOURNAMESPACE --force --grace-period=0

方法二

  • 导出 JSON 文件

    1
    kubectl get namespace $YOURNAMESPACE -o json > ns.json
  • 编辑 ns.josn 删除 finalizers 字段的值

    1
    2
    3
    "spec": {
    "finalizers": []
    },
  • 开启proxy

    1
    kubectl proxy --port=8081
  • 删除

    1
    curl -k -H "Content-Type:application/json" -X PUT --data-binary @ns.json http://127.0.0.1:8081/api/v1/namespaces/$YOURNAMESPACE/finalize

删除Evicted pod

1
kubectl get pod -A | grep Evicted | awk '{print $2" -n "$1}' | xargs kubectl delete pod

I'm so cute. Please give me money.

其他文章
cover
Kubernetes常用命令
  • 70/01/01
  • 00:00
  • Kubernetes-使用文档
cover
Kubernetes无状态容器副本管理
  • 70/01/01
  • 00:00
  • Kubernetes-使用文档
目录导航 置顶
  1. 1. Kubernetes强制删除资源
    1. 1.1. 卸载 Mount 挂载
    2. 1.2. 强制删除 Pod
    3. 1.3. 强制删除当前 Namespace 下所有 Pvc Pv
    4. 1.4. 强制删除 Namespace
    5. 1.5. 删除Evicted pod
请输入关键词进行搜索