我试图删除一个有12个pod的ReplicationController,我可以看到一些pod卡在终止状态。

我的Kubernetes集群由一个控制平面节点和三个安装在Ubuntu虚拟机上的工作节点组成。

这个问题的原因是什么?

NAME        READY     STATUS        RESTARTS   AGE
pod-186o2   1/1       Terminating   0          2h
pod-4b6qc   1/1       Terminating   0          2h
pod-8xl86   1/1       Terminating   0          1h
pod-d6htc   1/1       Terminating   0          1h
pod-vlzov   1/1       Terminating   0          1h

当前回答

强制删除命名空间中的所有pod:

kubectl delete pods --all -n <namespace> --grace-period 0 --force

其他回答

我使用这个命令删除pods

kubectl delete pod --grace-period=0 --force --namespace <NAMESPACE> <PODNAME>

但是当我尝试运行另一个pod时,它没有工作,它被卡在“Pending”状态,它看起来像节点本身被卡住了。

对我来说,解决方案是重新创建节点。我只是去了GKE控制台,从集群中删除了节点,所以GKE开始了另一个。

从那以后,一切又开始正常工作了。

请尝试以下命令: Kubectl补丁pod -p '{"metadata":{"finalizers":null}}'

Go模板可以在没有awk的情况下工作,对我来说,它可以在没有-grace-period=0 -force的情况下工作,但是,如果你喜欢的话,可以添加它

这将输出删除终止pods的命令。

kubectl get pods --all-namespaces -otemplate='{{ range .items }}{{ if eq .status.reason  "Terminated" }}{{printf "kubectl delete pod -n %v %v\n" .metadata.namespace .metadata.name}}{{end}}{{end}}'

如果您对输出感到满意,可以添加| sh -来执行它。 遵循:

kubectl get pods --all-namespaces -otemplate='{{ range .items }}{{ if eq .status.reason  "Terminated" }}{{printf "kubectl delete pod -n %v %v\n" .metadata.namespace .metadata.name}}{{end}}{{end}}' |sh -

强制删除pod:

kubectl delete pod --grace-period=0 --force --namespace <NAMESPACE> <PODNAME>

——force标志是强制的。

以下命令与awk和xargs可以使用——grace-period=0——force删除所有处于终止状态的pod。

kubectl get pods|grep -i terminating | awk '{print $1}' | xargs kubectl delete --grace-period=0 --force pod