部署本地服务时如何解决“ CrashLoopBackOff”

时间:2019-08-12 14:23:24

标签: kubernetes google-kubernetes-engine knative-serving

尝试在我的GKE中运行knative服务时。 Pods给我CrashLoopBackOff错误。该如何解决?

2 个答案:

答案 0 :(得分:1)

CrashLoopBackOff是Kubernetes的pod状态。这意味着您的Pod经常发生故障并重新启动,Kubernetes有时会降低Pod的重启速度以节省集群资源。

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

此人获取有关pod状态的所有信息,并仔细查看此处的状态部分至关重要。

kubectl get pod $podname -o yaml

这显示了带有时间轴和一些其他信息的pod发生了什么

kubectl describe pod $podname

此显示的是日志,但前一个窗格是完整的,因此日志从头到尾都已结束。没有上一部分,它将显示当前窗格,并且可能不会显示所有日志。

kubectl logs $podname --previous

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

答案 1 :(得分: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的所有Troubleshooting问题的链接。