通常我认为这是一个错误配置的应用程序的最佳实践,只需在启动时死亡,并提供描述问题的详细错误消息 .
例如,如果缺少预期的环境变量,意味着应用程序无法正常运行,而不是让它在一个永远无法运行的僵尸状态下运行,我提倡大声失败并使用错误消息查杀应用程序:
Critical Error: Environment variable [REDIS_HOST] not set.
在kubernetes中,这最终会在一个常量 CrashLoop Backoff
循环中结束 . 由于pod不断重启并且日志消失,因此很难得到该错误消息 .
有关处理此问题的正确方法的任何想法或建议?
谢谢
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
.