【问题标题】:GCP Cloud Run: One off jobs and "Configuration <servicename> does not have any ready RevisionGCP Cloud Run:一次性作业和“配置 <servicename> 没有任何现成的修订版
【发布时间】:2019-06-19 10:06:19
【问题描述】:

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

➣ $ 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 将容器部署到 Cloud Run on 集群命名空间 [默认] 中的 GKE 服务 [记录器] [pkaramol-cloudrun] X 部署新服务...配置“记录器” 没有任何现成的 Rev ision。 - 创建修订版... X 路由流量... 配置“记录器”没有任何准备好的修订版。部署失败错误: (gcloud.beta.run.deploy) 配置“logger”没有任何 准备好修订。

...在其他一些情况下,这需要很长时间

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...

有什么建议吗?

【问题讨论】:

    标签: google-cloud-platform google-cloud-run


    【解决方案1】:

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

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

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

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

    Container runtime contract

    【讨论】:

    • 感谢您的详细回答。因此,Cloud Run 似乎不是一次性工作的理想解决方案(因为我 必须 也可以在 PORT 上提供服务,这超出了我的范围),对吧?
    • @pkaramol - 我对您的要求知之甚少。创建一个包含细节的新问题。
    • 作为其性质的副作用,Cloud Build 可用于一次性作业。
    • @Grayside - 好点,我会记住的。 Cloud Build 只关注它可以运行的内容,但您是对的。
    猜你喜欢
    • 2020-06-26
    • 2023-02-09
    • 2021-10-20
    • 2020-02-07
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    相关资源
    最近更新 更多