尝试在我的 GKE 中运行 knative 服务时。Pod 给我 CrashLoopBackOff 错误。可以做些什么来解决这个问题?
2 回答
根据CrashLoopBackOff ,上述答案在以下步骤中是正确的。
- 检查崩溃容器的“退出代码”以找到问题的根本原因。
如上所述,从 describe pod 命令的输出中,在
containers: [CONTAINER_NAME]: last state: exit code
场地。
- 如果退出代码为 1,则容器因应用程序崩溃而崩溃。
如果退出代码为 0,请验证您的应用运行了多长时间。当您的应用程序的主进程退出时,容器会退出。如果您的应用程序很快完成执行,容器可能会继续重新启动。
- 连接到正在运行的容器 在 Pod shell 中运行此命令
kubectl exec -it [POD_NAME] -- /bin/bash
如果您的 Pod 中有多个容器,请添加 - c [CONTAINER_NAME]
。
您现在可以通过从该容器运行 bash 命令来使用此容器进行测试。
这是 Kubernetes Engine 的所有故障排除问题的链接。
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 并执行它。