我试图删除一个有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卡在“终止”中,即使在我尝试重新启动docker和重新启动服务器之后。在编辑pod并删除'finalizer'下面的项目后解决

$ kubectl -n mynamespace edit pod/my-pod-name

其他回答

我发现这个命令更直接:

for p in $(kubectl get pods | grep Terminating | awk '{print $1}'); do kubectl delete pod $p --grace-period=0 --force;done

它将删除默认命名空间中处于终止状态的所有pod。

如果——grace-period=0不起作用,那么你可以这样做:

kubectl delete pods <pod> --grace-period=0 --force

对我来说,我不喜欢变通。所以有几个步骤:

k get pod -o wide ->这会显示哪个Node正在运行pod k get nodes ->检查节点状态…我明白了

我修复了这个节点。对于我的情况,它只是重新启动kubelet:

ssh that-node ->运行swapoff -a && systemctl restart kubelet(或systemctl restart k3s,如果k3s |或systemctl restart crio,在其他情况下,如OCP 4。X (k8s <1.23))

现在删除豆荚应该工作而不强迫可怜豆荚。

我在Kubernetes生产集群中遇到了同样的问题。

一个吊舱被困在终止阶段一段时间:

pod-issuing   mypod-issuing-0   1/1     Terminating   0  27h

我尝试使用命令检查日志和事件:

kubectl describe pod mypod-issuing-0 --namespace pod-issuing
kubectl logs mypod-issuing-0 --namespace pod-issuing

但没有人可以看到

我是如何解决的:

我运行下面的命令来强制删除pod:

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

这将立即删除pod并开始创建一个新的pod。然而,当创建另一个pod时,我遇到了下面的错误:

无法挂载或挂载卷:unmounted volumes=[data], unattach volumes=[data mypod- issue -token-5swgg aws-iam-token]:超时等待条件

我不得不等待7到10分钟,使卷从我删除的上一个pod中分离出来,以便它可以用于我正在创建的新pod。

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

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