openshift删除状态为terminal或者Unknow的pod

本文介绍了解决Kubernetes中无法删除的Pod的方法,包括使用官方命令强制删除、编辑Finalizers及直接从etcd删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用openshift的过程中(kubernetes原理一样),经常会发现由于docker daemon 僵死或者是网络通信状况不佳导致node失联,从而导致一些pod通过常规的手段无法删除,例如:oc delete pod <pod_name> -n <namespace> 或者kubectl delete pod <pod_name> -n <namespace>一般来说kubernetes会将这种pod标记为Terminating或者Unknow

碰到这种情况有三种方法来解决:

  • 首先可以尝试官方提供的强制删除命令
    oc delete pod <pod_name> -n <namespaces> --force --grace-period=0
  • 如果以上命令也无法删除,此时一般是由于 finalizers 导致的,通过 kubectl editfinalizers 删除即可解决。
    oc patch pod <pod_name> -p '{"metadata":{"finalizers":null}}'
  • 如果第二条命令无法执行,或者报错。那么说明该pod的元数据的状态已经有冲突了。此时只能通过etcd删除该pod
# 首先查询到该pod的建,我这里的版本为etcd 3.2.5
# 其中ETCDCTL_API=3意思是使用v3版的api也可以通过export ETCDCTL_API=3来指定
# --prefix是指的以/为前缀的key --keys-only表示只列出key
ETCDCTL_API=3 etcdctl --cacert=/etc/etcd/ca.crt --cert=/etc/etcd/peer.crt --key=/etc/etcd/peer.key --endpoints="https://10.19.51.34:2379" get --prefix --keys-only /
/kubernetes.io/pods/openshift-web-console/webconsole-7f9d8454bf-422rs
/kubernetes.io/pods/openshift-web-console/webconsole-7f9d8454bf-lmfqt
/kubernetes.io/pods/openshift-web-console/webconsole-7f9d8454bf-szfck
/kubernetes.io/pods/paas-job/clear-xin-kong-1563732000-6jx5k
/kubernetes.io/pods/paas-job/clear-xin-kong-1563732000-hhm6d
# 此处以/kubernetes.io/pods/openshift-web-console/webconsole-7f9d8454bf-szfck为例
ETCDCTL_API=3 etcdctl --cacert=/etc/etcd/ca.crt --cert=/etc/etcd/peer.crt --key=/etc/etcd/peer.key --endpoints="https://10.19.51.34:2379" del /kubernetes.io/pods/openshift-web-console/webconsole-7f9d8454bf-szfck

以上三步基本上就能解决所有不能删除的pod了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值