【问题标题】:What causes 'Cloud Run error: Internal system error, system will retry later'? Suggestions for troubleshooting?什么原因导致“Cloud Run 错误:内部系统错误,系统将稍后重试”?故障排除建议?
【发布时间】:2020-10-09 21:51:47
【问题描述】:

我正在尝试部署 Cloud Run 服务作为我的开源项目测试的一部分。这是通过我们的自动化 CI/CD 系统完成的,之前已经成功运行了数百次。

创建了 Cloud Run 服务,但从未部署第一个修订版。当我在 GCP Console 中查看新创建的服务时,它显示“云运行错误:内部系统错误,系统将稍后重试。”作为服务的主要状态消息。

失败的命令行是:

gcloud --configuration=adapt-cloud-gcloud-testing --quiet run deploy cloud-run-gen-name-a179e65d6fdfc19abc57e15df563d8cb --platform=managed --format=json --no-allow-unauthenticated --memory=128M --cpu=1 --image=gcr.io/adapt-ci/http-echo --region=us-central1 --port=5678 --set-env-vars=ADAPT_TEST_DEPLOY_ID=MockDeploy-aymb --args="-text,Adapt Test"

该命令的输出(注意:Creating Revision 后面的点继续):

Deploying container to Cloud Run service [cloud-run-gen-name-a179e65d6fdfc19abc57e15df563d8cb] in project [adapt-ci] region [us-central1]
Deploying new service...
Creating Revision....................................................................................................................

控制台中的 YAML 选项卡还针对三个状态条件中的每一个显示相同的消息(见下文)。

为了解决问题,我也试过:

  • 使用 GCP Console 手动创建最基本的 Cloud Run 服务,使用入门文档中的示例容器,同时以项目和组织所有者身份登录。我看到了同样的失败。我以前使用此帐户和项目以这种方式手动创建了服务,没有任何问题。
  • 使用 GCP Console 在不同的项目中创建与上述相同的示例服务,但使用相同的用户和相同的组织。这很成功,所以问题是特定于项目的。
  • 我尝试了两个不同的美国地区,结果相同。
  • 由于这通常是自动化的,因此我尝试查找任何超出的配额。在 Cloud Run 配额页面和整体配额页面上,我现在或历史上都没有看到任何超出的配额。不过,这是一个我不太熟悉的领域,所以可能漏掉了一些东西。
  • 在两天内重试了数十次。
  • GCP 状态页面显示没有中断。

我应该采取哪些其他故障排除步骤来调查和解决此问题?

来自 GCP 控制台中 YAML 选项卡的失败服务的部分信息:

status:
  observedGeneration: 1
  conditions:
  - type: Ready
    status: Unknown
    message: 'Cloud Run error: Internal system error, system will retry later.'
    lastTransitionTime: '2020-10-08T21:07:20.844314Z'
  - type: ConfigurationsReady
    status: Unknown
    message: 'Cloud Run error: Internal system error, system will retry later.'
    lastTransitionTime: '2020-10-08T21:07:20.755212Z'
  - type: RoutesReady
    status: Unknown
    message: 'Cloud Run error: Internal system error, system will retry later.'
    lastTransitionTime: '2020-10-08T21:07:20.844314Z'
  latestCreatedRevisionName: cloud-run-gen-name-3bab80f75cfd57cf87ad89d9d2c18ba3-00001-fus

【问题讨论】:

  • 您是否尝试过禁用/启用 Cloud Run Admin API?
  • 您是否更改/删除了 Cloud Run 服务帐号?
  • @JohnMichaelG 我禁用并重新启用了 Cloud Run Admin API,之后,我可以使用我的项目所有者帐户从控制台运行示例容器。然后我还能够使用 CI 服务帐户从命令行运行示例容器。但是,我给出的原始命令行仍然以完全相同的方式失败。

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


【解决方案1】:

经过相当多的反复试验,我让一切都恢复正常了。

我取得一些进展的第一件事是禁用 Cloud Run Admin API 并重新启用它。更改后,我能够使用控制台中的示例容器创建服务,并以项目所有者身份登录。我还能够使用 CLI 中的示例容器创建服务,并以 CI 服务帐户身份登录。但是,我的问题中的原始命令仍然具有与以前相同的行为。我不知道项目是如何进入这种状态的,以至于项目所有者无法使用 Cloud Run。

我做的第二件事是将我尝试使用的容器映像 (gcr.io/adapt-ci/http-echo) 重新推送到 GCR。我推送了与之前完全相同的图像。这最终让 CI 系统成功创建了 Service。

作为我之前故障排除的一部分,我查看了该项目的 Google Container Registry,并确认所需的映像仍然存在。但是,我们最近在 Cloud Storage 存储分区上启用了生命周期策略,以删除超过一定时间的项目。所以我最好的猜测是该策略删除了与gcr.io/adapt-ci/http-echo 图像关联的一些,但不是全部文件,这导致了内部错误,而不是一个错误说容器图像不能找到了。

【讨论】:

  • 听起来不错。使用 Container Registry 存储桶手动干扰文件或设置但生命周期策略通常不是一个好主意。使用 GCR UI/CLI 删除未使用的容器镜像。或者,我们有第三方工具来定期清理未使用的图像。
猜你喜欢
  • 1970-01-01
  • 2021-01-24
  • 2020-03-18
  • 2021-03-18
  • 2012-10-24
  • 2023-01-09
  • 1970-01-01
  • 1970-01-01
  • 2017-02-14
相关资源
最近更新 更多