1

我创建了一个非常简单的图像,它执行一次性作业(打印一些虚拟日志)并退出如下:

➣ $ cat Dockerfile
from alpine:latest

COPY entrypoint.sh /usr/local/bin/entrypoint

ENTRYPOINT ["entrypoint"]

CMD ["100"]

...在哪里

➣ $ cat entrypoint.sh
#!/bin/sh

ITERATIONS=${1:-1000}
counter=1

while [ "$counter" -le "$ITERATIONS" ]; do
    echo "Executing and logging iteration no $counter"
      counter=$(($counter + 1))
done

尝试部署到 Cloud Run 时,

使用以下命令:

gcloud beta run deploy logger --image=pkaramol/logging --cluster=pkaramol-cloudrun

它失败并显示以下我无法解码的消息:

服务名称(日志记录): logger 在集群 [pkaramol-cloudrun] 的命名空间 [default] 中将容器部署到 GKE 服务 [logger] 上的 Cloud Run X 部署新服务... 配置“logger”没有任何现成的修订版。- 创建修订版... X 路由流量... 配置“记录器”没有任何准备好的修订版。部署失败错误:(gcloud.beta.run.deploy)配置“记录器”没有任何现成的修订版。

...在其他一些情况下,它需要永远

Deploying container to Cloud Run on GKE service [mylogger] in namespace [default] of cluster [pkaramol-cloudrun]
⠶ Deploying new service... Configuration "mylogger" is waiting for a Revision
 to become ready.
  ⠶ Creating Revision...
  . Routing traffic...

有什么建议么?

4

1 回答 1

3

当您的容器启动时,它必须启动一个程序,该程序在端口 $PORT (8080) 上作为 HTTP 服务器响应。

您可以在容器中运行几乎任何软件。接口是 HTTP 请求/响应。CPU 在 HTTP 请求之间处于空闲状态。

您的容器不符合 Cloud Run 要求,并在 Cloud Run 在端口 $PORT 上检测到无响应/错误响应时终止。

阅读本文档以更好地了解软件要求:

容器运行时合约

于 2019-06-19T13:19:55.550 回答