Redhat Openshift 部署配置已停止工作并出现“Crashloop backoff error”[已关闭]

问题描述 投票:0回答:3

我们使用 RedHat Openshift 来托管和部署我们的应用程序。

一切都工作正常,直到最近使用 DeploymentConfig 的部署刚刚开始抛出“崩溃循环退避错误”,没有太多日志,并且一旦我们尝试部署就失败了。

即使使用原来有效的旧代码现在也失败了。只能部署镜像流中已存在的镜像。

任何新的部署都会进入来自 nexus 的镜像流中,但是一旦我们在 deplymentconfig 中编辑标签,pod 就会抛出“Crashloop backoff error”,然后恢复到旧镜像

我们尝试检查旧的代码提交,即使它们失败了,这些代码提交仍然可以工作。

docker dockerfile devops openshift
3个回答
0
投票

启动期间容器崩溃通常会导致 CrashLoopBackOff 错误。在解决这个问题的日常实践中,我会检查发生故障的 Pod 的日志。即使 Pod 立即崩溃,也应该有日志可以指示出了什么问题。

oc logs <pod_name> --previous

--previous
标志将显示 Pod 上一个实例(即崩溃的实例)的日志。

此外,在某些情况下,您可以检查部署配置中的 YAML 文件,因为它也可能包含错误日志。祝你好运!


0
投票

我会检查以下选项:

  • 容器中运行的应用程序会出现恐慌并终止。
  • 活性探测失败。
  • Readiness 探测失败(我会尝试增加 initialDelaySeconds)。
  • Openshift 启用了 FIPS 模式,但部署的应用程序/操作员 pod 是 不是 FIPS 投诉(联邦信息处理标准)。
  • 容器镜像需要以特定用户身份运行(manage_scc)。
  • 在映像内启动的进程不是一个长时间运行的进程,并且找不到 tty,容器只是退出并重复重新启动(OpenShift 中的崩溃循环)。
  • 正在使用基础映像,并且没有长时间运行的命令可以使该容器保持活动状态。

如果前面的步骤没有帮助,您可以尝试以下操作:

  • 检查入口点。
  • 尝试在本地运行您的图像。
  • 你尝试过oc描述pod吗
  • 您可以尝试 oc debug - 它将创建 pod 的副本并为您提供 shell。

参考:Openshift Pod 的 CrashLoopBackOff 状态


0
投票

解决了。

这不是 Openshift 错误,而是因为我们的 Dockerfile 的 EOL 转换以某种方式自动从 Unix(LF) 更改为 Windows(CR LF)。

保存 Dockerfile 的 EOL 从 Windows 到 Unix 的转换并保存时一切正常。

了解更多:

  1. Git 用 CRLF 替换 LF

  2. https://delitescere.medium.com/docker-file-permissions-and-line-endings-9aced07d70f8

  3. https://www.reddit.com/r/docker/comments/c0x1ov/how_to_manage_crosssystems_builds_crlf_vs_cr_files/

© www.soinside.com 2019 - 2024. All rights reserved.