Kubernetes Pods 卡在 'Terminating' 状态

Kubernetes Pods stuck with in 'Terminating' state

在删除与 Pods 相关的部署(和服务)后,Kubernetes Pods 卡在 Terminating 的状态。目前他们处于这种状态已经有3个小时左右了。

Deployment 和 Service 是从文件创建的,然后稍后通过引用相同的文件被删除。在此期间文件没有以任何方式更改。

kubectl apply -f mydeployment.yaml -f myservice.yaml
...
kubectl delete -f mydeployment.yaml -f myservice.yaml

尝试手动删除任何 Pods 会导致我的终端挂起,直到我按下 Ctrl+c

kubectl kdelete pod mypod-ba97bc8ef-8rgaa --now

有一个GitHub issue建议输出日志看看错误,但是没有可用的日志(注意"mycontainer"是"mypod"中唯一的容器-

kubectl logs mypod-ba97bc8ef-8rgaa

Error from server (BadRequest): container "mycontainer" in pod "mypod-ba97bc8ef-8rgaa" is terminated

前面提到的 GitHub issue 表明卷清理可能是问题所在。 "mycontainer" 附加了两个卷,但在创建和删除 Deployment 之间都没有发生任何变化(用于存储 Azure 存储帐户名称和访问密钥的 Secret [generic] 也没有改变)。

虽然 Pods 没有可用的日志,但可以描述它们。但是,那里似乎没有太多有用的信息。请注意,下面的 StartedFinished 时间与 describe 命令的输出完全相同。

kubectl describe pod mypod-ba97bc8ef-8rgaa

>

Containers:
  mycontainer:
    ...
    State:          Terminated
      Exit Code:    0
      Started:      Mon, 01 Jan 0001 00:00:00 +0000
      Finished:     Mon, 01 Jan 0001 00:00:00 +0000

我怎样才能发现导致 Pods 卡住的原因,以便我最终摆脱它们?

搜索 Google 一段时间后,我一无所获,但在我添加标题时出现的建议 Stack Overflow question 挽救了这一天。

kubectl delete pods mypod-ba97bc8ef-8rgaa --grace-period=0 --force

无法发表评论,但要添加到 David Gard 答案中,您还必须终止 pod 所在节点上的进程:docker ps -a | grep $POD_NAME 然后 sudo ps -aux | grep $CONTAINER_ID,将有 2 个进程:containerd-shim 和运行。杀死 containerd-shim 个进程