-2

尝试在我的 GKE 中运行 knative 服务时。Pod 给我 CrashLoopBackOff 错误。可以做些什么来解决这个问题?

4

2 回答 2

1

根据CrashLoopBackOff ,上述答案在以下步骤中是正确的。

  1. 检查崩溃容器的“退出代码”以找到问题的根本原因。

如上所述,从 describe pod 命令的输出中,在

containers: [CONTAINER_NAME]: last state: exit code场地。

  • 如果退出代码为 1,则容器因应用程序崩溃而崩溃。
  • 如果退出代码为 0,请验证您的应用运行了多长时间。当您的应用程序的主进程退出时,容器会退出。如果您的应用程序很快完成执行,容器可能会继续重新启动。

    1. 连接到正在运行的容器 在 Pod shell 中运行此命令

kubectl exec -it [POD_NAME] -- /bin/bash

如果您的 Pod 中有多个容器,请添加 - c [CONTAINER_NAME]

您现在可以通过从该容器运行 bash 命令来使用此容器进行测试。

这是 Kubernetes Engine 的所有故障排除问题的链接。

于 2019-08-13T15:39:17.723 回答
1

CrashLoopBackOff 是 Kubernetes pod 状态。这意味着您的 Pod 不断出现故障并重新启动,有时 Kubernetes 会减慢 Pod 的重启速度以节省集群中的资源。

有几种方法可以调试此错误:

这个获取有关 pod 状态的所有信息,并且仔细查看此处的状态部分是必不可少的。

kubectl get pod $podname -o yaml

这个显示了带有时间线和一些附加信息的 pod 发生了什么

kubectl describe pod $podname

这个显示日志,但前一个 pod,所以它是完整的日志从头到尾。如果没有前面的部分,它会显示当前的 pod,并且可能不会显示所有日志。

kubectl logs $podname --previous

最后一个不是命令,而是方法,如果你真的想在容器中挖掘并且上面的命令没有帮助,将 sidecar 添加到 pod 并检查文件系统是否有错误,或者简单地将 .spec.restart 设置为 Never 并执行它。

于 2019-08-12T21:08:05.847 回答