k8s 强制删除k8s资源

强制删除namespace

当删除ns 时候里面还有其他资源,那么就会导致删除不了ns ,一直处于Terminating 状态,然后再在此命名空间内部新增资源的时候就会导致失败,所以要强制删除。

 

kubectl get namespace  monitoring -o json > monitoring.json

vi monitoring.json 删除下面部分

 

 

 

新增一个代理端口,代理的其实就是apiserver的非加密端口8080,运行此命令后会占用终端,需要再开一个窗口执行curl命令

kubectl proxy --port=8081

 

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

 

注意:在高版本的k8s中默认只开启了加密端口,所以需要手动开启api的非加密8080。例如通过kubeadm安装的集群可直接更改配置文件

vi /etc/kubernetes/manifests/kube-apiserver.yaml

把--insecure-port=0  改为 --insecure-port=8080 即可,等待几秒自动生效。

 

解释:之所以通过8080 非加密端口执行删除命令,是因为加密端口需要证书认证。

 

快捷方式: 一条命了搞定

kubectl get namespace kube-node-lease  -o json | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/"  | kubectl replace --raw /api/v1/namespaces/kube-node-lease/finalize -f - 

强制删除POD

kubectl delete pod PODNAME --force --grace-period=0

 

强制删除pv,pvc

kubectl patch  persistentvolume pvc-63583510-95ba-461c-a71c-0b84c269be40  -p '{"metadata":{"finalizers":null}}'

kubectl patch pvc pvc-common-rw-0   -p '{"metadata":{"finalizers":null}}' -n nlp

 

 

posted @ 2020-12-10 16:56  fanggege  阅读(2716)  评论(0编辑  收藏  举报