我们使用 RedHat Openshift 来托管和部署我们的应用程序。
一切都工作正常,直到最近使用 DeploymentConfig 的部署刚刚开始抛出“崩溃循环退避错误”,没有太多日志,并且一旦我们尝试部署就失败了。
即使使用原来有效的旧代码现在也失败了。只能部署镜像流中已存在的镜像。
任何新的部署都会进入来自 nexus 的镜像流中,但是一旦我们在 deplymentconfig 中编辑标签,pod 就会抛出“Crashloop backoff error”,然后恢复到旧镜像
我们尝试检查旧的代码提交,即使它们失败了,这些代码提交仍然可以工作。
启动期间容器崩溃通常会导致 CrashLoopBackOff 错误。在解决这个问题的日常实践中,我会检查发生故障的 Pod 的日志。即使 Pod 立即崩溃,也应该有日志可以指示出了什么问题。
oc logs <pod_name> --previous
--previous
标志将显示 Pod 上一个实例(即崩溃的实例)的日志。
此外,在某些情况下,您可以检查部署配置中的 YAML 文件,因为它也可能包含错误日志。祝你好运!
我会检查以下选项:
如果前面的步骤没有帮助,您可以尝试以下操作:
解决了。
这不是 Openshift 错误,而是因为我们的 Dockerfile 的 EOL 转换以某种方式自动从 Unix(LF) 更改为 Windows(CR LF)。
保存 Dockerfile 的 EOL 从 Windows 到 Unix 的转换并保存时一切正常。
了解更多: