首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌云运行的准备状态检查-怎么做?

谷歌云运行的准备状态检查-怎么做?
EN

Stack Overflow用户
提问于 2019-05-28 19:23:20
回答 2查看 6.9K关注 0票数 10

我在https://cloud.google.com/run/docs/how-to的文档中进行了相当广泛的搜索。我还在console.cloud.google.com中找到了YAML,但我无法编辑它。有没有一种方法可以使用我可能遗漏的命令来设置它?

编辑:我在https://cloud.google.com/sdk/gcloud/reference/beta/container/clusters/create上也找不到任何关于它的信息。

EDIT2:

我正在寻找一种让Google云运行的方法,在一个容器中检查我的应用程序是否就绪。和kubernetes一样--这里的例子是:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/。问题是我不想在容器中的应用程序还在旋转的时候让我的服务中断30-60秒。谷歌立即重定向流量,使用户等待了很长时间,当我推动一个新的构建。

EDIT3:在我部署了一个新版本之后,提出第一个初始请求所需的时间如下。

EDIT4:我试图启动的应用程序是用Python编写的。这是一个为tensorflow模型服务的烧瓶应用程序。我需要将几个文件加载到内存中。这在我的计算机上只需要5-10秒,但你可以在云运行时花费更长的时间。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-31 16:33:28

云运行除了确认您的服务正在侦听指定的端口之外,没有其他准备就绪的检查。一旦完成,流量就开始路由到新的修订版,而以前的服务修订版在结束正在进行的请求时会被缩小。

如果您的目标是确保服务在部署后尽快就绪,您可能会创建一个更重的入口点来处理更多的设置任务。

像这样的“较重”入口点将有助于部署后响应,而代价是较慢的冷启动。。

您可以在入口点(无论是在BASH脚本中还是在您的服务中打开HTTP服务器之前)进行前端加载的示例:

  • 执行所有必要的设置任务,例如将文件加载到内存中。
  • 在全局状态下建立和保存任何客户端或与支持服务的连接。
  • 通过服务代码执行支持服务和资源可用的任何健康检查。
  • 将容器中的缓存热身,以减少第一次响应。

同样,这将通过惩罚所有冷启动来优化部署后的响应。

performance

票数 8
EN

Stack Overflow用户

发布于 2022-10-04 01:39:25

注意:最近进行了一次更新,情况有所改善。

https://cloud.google.com/run/docs/configuring/healthchecks

“您可以配置HTTP和TCP启动健康检查探针,以及新的和现有的云运行服务的HTTP活性探测。”

奇怪的是,云运行仍然不允许准备探测。

但启动和活性探测是允许的。

启动探测充当初始启动的准备状态探测与正在进行的准备状态探测。也就是说,在大多数情况下,启动+活性探测可能就足够了,如果它失败了,它的活性探测仍然会从负载平衡中删除。启动探针给了替换者足够的时间来完成引导,然后才能接收到流量。

注意,我喜欢验证一些东西,CloudRun使验证启动探针的initialDelaySeconds是否按预期工作变得困难和不直观&它们的API在自动化友好方面受到了令人恼火的限制。

说,这将使您了解它是如何工作的:

代码语言:javascript
复制
# Edit Vars
export CR_SERVICE_NAME=startup-probe-test
export PROJECT=chrism-playground
export REGION=us-central1

# Set defaults
gcloud config set project $PROJECT
gcloud config set run/region $REGION

# Deploy a Hello World App for testing purposes
gcloud run deploy $CR_SERVICE_NAME \
--image=us-docker.pkg.dev/cloudrun/container/hello \
--allow-unauthenticated \
--max-instances=1

# Hacky Automation to workaround CloudRun's lack of good automation
gcloud run services describe $CR_SERVICE_NAME --format export > example.yaml
export TOP=$(cat example.yaml | grep "        ports:" -B 1000 | grep -v "        ports:")
export BOTTOM=$(cat example.yaml | grep "        ports:" -A 1000)
export MIDDLE=$(echo """
        startupProbe:
          initialDelaySeconds: 60
          timeoutSeconds: 2
          periodSeconds: 10
          failureThreshold: 3
          httpGet:
            path: /healthy
""" | sed '1d')
export REPLACE_NAME=$(echo "$TOP" | grep       "name: $CR_SERVICE_NAME-")
export NEW_TOP=$(echo $TOP | sed s/$REPLACE_NAME/"      name: $CR_SERVICE_NAME-new"/)
echo "$NEW_TOP\n$MIDDLE\n$BOTTOM" | tee updated-example1.yaml

export NEW_TOP=$(echo $TOP | sed s/$REPLACE_NAME/"      name: $CR_SERVICE_NAME-newest"/)
echo "$NEW_TOP\n$MIDDLE\n$BOTTOM" | tee updated-example2.yaml

# Run these (should take about 3 mins for both to finish)
gcloud beta run services replace updated-example1.yaml
gcloud beta run services replace updated-example2.yaml

复制粘贴该bash之后,您应该会看到如下所示:

单击图像中接近1的符号,然后选中框以查看修订URL& Actions,然后按OK。

如图所示,创建原始的修订URL&启动-探测,然后单击每个来测试。

当我点击原始标签链接时,网站立即加载。

https://original---startup-probe-test-pxehf3xjcq-uc.a.run.app/

当我点击标记为“启动探针”的链接时,该站点有一个加载循环60秒,然后按预期工作,这证明该启动探针正常工作。

https://startup-probe---startup-probe-test-pxehf3xjcq-uc.a.run.app/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56348839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档