Kubernetes Pod 陷入“终止”状态

Dav*_*ard 3 kubernetes azure-aks

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

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

kubectl apply -f mydeployment.yaml -f myservice.yaml
...
kubectl delete -f mydeployment.yaml -f myservice.yaml
Run Code Online (Sandbox Code Playgroud)

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

kubectl kdelete pod mypod-ba97bc8ef-8rgaa --now
Run Code Online (Sandbox Code Playgroud)

有一个GitHub 问题建议输出日志来查看错误,但没有可用的日志(注意“mycontainer”是“mypod”中唯一的容器 -

kubectl logs mypod-ba97bc8ef-8rgaa
Run Code Online (Sandbox Code Playgroud)

来自服务器的错误(BadRequest):pod“mypod-ba97bc8ef-8rgaa”中的容器“mycontainer”已终止

上述GitHub 问题表明卷清理可能是问题所在。有两个卷附加到“mycontainer”,但在创建和删除部署之间都没有发生任何变化(用于存储 Azure 存储帐户名称和访问密钥的 Secret [通用] 也没有发生变化)。

尽管没有 Pod 可用的日志,但可以对它们进行描述。不过,里面似乎并没有太多有用的信息。请注意,下面的StartedFinished时间与describe 命令的输出中的时间完全相同。

kubectl describe pod mypod-ba97bc8ef-8rgaa
Run Code Online (Sandbox Code Playgroud)

>

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
Run Code Online (Sandbox Code Playgroud)

我如何才能发现导致 Pod 卡住的原因,以便最终摆脱它们?

Dav*_*ard 7

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

kubectl delete pods mypod-ba97bc8ef-8rgaa --grace-period=0 --force
Run Code Online (Sandbox Code Playgroud)

  • 请注意,此命令仅从 etcd 数据库中删除 pod,但不会检查 pod 是否实际从节点中删除。您最好检查节点是否存在容器,或者简单地清空节点并重新启动它以确保。 (6认同)