通常我认为这是错误配置的应用程序的最佳做法,只需在启动时死亡,并提供描述问题的详细错误消息。
例如,如果缺少预期的环境变量,意味着应用程序无法正常运行,而不是让它在一个永远无法运行的僵尸状态下运行,我提倡大声失败并使用错误消息:
Critical Error: Environment variable [REDIS_HOST] not set.
在kubernetes中,这会以一个常量CrashLoop Backoff
循环结束。由于pod不断重启并且日志消失,因此很难找到该错误消息,这并不是很好。
有关处理此问题的正确方法的任何想法或建议吗?
感谢
答案 0 :(得分:1)
默认情况下,您可以通过写入/dev/termination-log
来自定义容器的终止消息。当容器终止时,您可以使用kubectl get pods <podName> -o go-template="{{range .status.containerStatuses}}{{.lastState.terminated.message}}{{end}}"
来检索邮件。有关此内容的更多信息,请访问here。
您还可以使用kubectl logs <podName> -c <containerName> --previous
查看Pod中特定容器的上一个实例的输出 - 这可能对您更有用,因为您不必更改应用程序以将错误消息写入/dev/termination-log
。