【问题标题】:Getting a crashloopbackoff error in Google Kubernetes Engine在 Google Kubernetes Engine 中出现 crashloopbackoff 错误
【发布时间】:2019-10-20 09:13:40
【问题描述】:

我有一个 dockerfile 来构建一个简单的 React 应用程序以部署到 GKE。但是当我运行以下命令时出现 crashloopback 错误:

kubectl create deployment react-web --image=gcr.io/qwiklabs-gcp-00-a41e63735e00/react-docker-app:v1

我的 dockerfile 有以下内容:

# build environment
FROM node:8 as react-build
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json /app/package.json
RUN npm install --silent
RUN npm install react-scripts@3.0.1 -g --silent
COPY . /app
RUN npm run build

# production environment
FROM nginx:alpine
COPY --from=react-build /app/build /usr/share/nginx/html
EXPOSE 80
CMD [“nginx”, “-g”, “daemon off;”]

然后我运行 kubectl describe pod react-web 并返回错误代码 127。 results of kubectl describe pod

我还运行docker run react-docker-app 来测试它是否在本地运行,但我得到了这个输出:

/bin/sh: [“nginx”,: not found
/bin/sh: ”]: not found

这个错误可能是因为我的本地机器上没有安装 nginx 吗? 或者没有安装nginx和crashloopbackoff错误之间是否有关系。

注意:Kubernetes 集群有两个 pod。

【问题讨论】:

  • 您能否再次检查您的CMD 是否有直引号["nginx"]?它们在您的问题和错误中显示为大引号,这可能会导致这种情况。
  • 您在 GKE 中的容器日志中是否遇到相同的错误?

标签: reactjs docker nginx kubernetes google-kubernetes-engine


【解决方案1】:

没有必要在文件末尾添加 CMD,因为图像已经附带了。您正在收到 crashloopback,因为 pod 在启动时失败,因此 127 退出代码。

删除以下行,它应该可以工作。

CMD [“nginx”, “-g”, “daemon off;”]

【讨论】:

  • 根据 docker docs:“Dockerfile 中只能有一个 CMD 指令。如果您列出多个 CMD,则只有最后一个 CMD 才会生效。”:docs.docker.com/engine/reference/builder/#cmd。此外,在 nginx docker 映像上有使用自定义 CMD 的说明:hub.docker.com/_/nginx。我认为 Dockerfile 中的 CMD 不会导致这里出现问题。
【解决方案2】:

我已经遇到过这个问题。接下来您可以尝试添加部署配置:

stdin: true
tty: true

【讨论】:

  • 这实际上帮助了我。谢谢。
猜你喜欢
  • 2020-05-04
  • 2020-03-31
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 2018-05-27
相关资源
最近更新 更多