标签: google-cloud-run

如何修复 CloudRun 错误“请求已中止,因为没有可用的实例”

我正在使用托管 CloudRun 部署一个带有concurrency=1. 部署后,我将并行触发四个长时间运行的请求。大多数情况下,一切正常——但偶尔,我会在几秒钟内面对来自其中一个节点的 500 个;日志仅提供主题中提供的错误消息。

使用带指数退避的重试并没有改善这种情况;重试也以 500 秒结束。StackDriver 日志也​​不提供更多信息。

可能相关的gcloud beta run deploy论点:

--memory 2Gi --concurrency 1 --timeout 8m --platform managed

错误消息的确切含义是什么——我该如何解决这个问题?

google-cloud-platform serverless google-cloud-run

12
推荐指数
3
解决办法
4091
查看次数

Google Cloud Run 有一天会支持 GPU/TPU 吗?

到目前为止,Google Cloud Run 支持 CPU。有支持GPU的计划吗?如果 GPU 可用,那就太酷了,然后我可以演示 DL 项目,而无需真正运行超级昂贵的 GPU 实例。

google-cloud-run

11
推荐指数
2
解决办法
1845
查看次数

使用 Google Cloud Run 进行 Stackdriver Trace

我一直在深入研究 Google Cloud Run 上的 Stackdriver Trace 集成。我可以让它与代理一起工作,但有几个问题困扰着我。

鉴于

  • Stackdriver 代理在一个小缓冲区中聚合跟踪并定期发送它们。
  • 当 Cloud Run 服务未处理请求时,CPU 访问会受到限制。
  • Cloud Run 服务没有关闭钩子;您无法在关闭前清除缓冲区:容器只会收到SIGKILL。这是您无法从应用程序中捕捉到的信号。
  • 运行在请求-响应周期之外发送信息的后台进程似乎违反了Knative Container Runtime 合同
  • 日志数据的集合被记录在案,不需要我运行代理,但没有这样的遥测解决方案。
  • 我发现了一份报告,称有人使用基于代理的方法在 Cloud Run 上丢失了踪迹

谷歌是如何做到的

我进入了 Cloud Endpoints ESP 的源代码(Cloud Run 集成处于测试阶段),看看他们是否以不同的方式解决它,但使用了相同的模式:有一个带有跟踪 (1s) 和它会定期清除。

虽然我的跟踪集成似乎在我的测试设置中工作,但我担心在生产环境中运行它时不完整和丢失的跟踪。

  • 这是一个假设的问题还是一个真实的问题?

  • 看起来解决这个问题的正确方法是将遥测数据写入日志,而不是使用代理进程。Stackdriver Trace 支持吗?

google-cloud-platform stackdriver google-cloud-run

11
推荐指数
1
解决办法
1061
查看次数

如何使用 docker-compose 将容器部署到谷歌云?

我对 GCP 很陌生,主要使用 AWS。我目前正在尝试使用 GCP 并希望使用docker-compose.

我设置了一个非常基本的 docker-compose.yml 文件,如下所示:

# docker-compose.yml
version: '3.3'

services:
  git:
    image: alpine/git
    volumes:
      - ${PWD}:/git
    command: "clone https://github.com/PHP-DI/demo.git"

  composer:
    image: composer
    volumes:
      - ${PWD}/demo:/app
    command: "composer install"
    depends_on:
      - git

  web:
    image: php:7.4-apache
    ports:
      - "8080:${PORT:-80}"
      - "8000:${PORT:-8000}"
    volumes:
      - ${PWD}/demo:/var/www/html
    command: php -S 0.0.0.0:8000 -t /var/www/html
    depends_on:
      - composer

Run Code Online (Sandbox Code Playgroud)

因此容器将从 git 获取代码,然后使用 composer 安装依赖项,最后在端口 8000 上可用。

在我的机器上,运行docker-compose up无所不能。但是如何将这个 docker-compose 推送到谷歌云。

我尝试使用docker/compose图像和 Dockerfile构建容器,如下所示:

FROM docker/compose

WORKDIR /opt
COPY docker-compose.yml …
Run Code Online (Sandbox Code Playgroud)

docker google-cloud-platform google-kubernetes-engine docker-compose google-cloud-run

11
推荐指数
2
解决办法
9117
查看次数

无法使用其他项目的映像部署 Cloud Run Service

尝试使用同一组织中另一个项目的映像部署 Cloud Run Service 时出现此错误。

" Google Cloud Run Service Agent 必须具有读取镜像的权限,gcr.io/my-builds/consultoriaweb@sha256:8c655b2bab.....确保提供的容器镜像 URL 正确且上述帐户有访问权限图像。如果您刚刚启用 Cloud Run API,权限可能需要几分钟才能传播。请注意,图像来自项目 [my-builds],与此项目 [my-webapp] 不同。权限必须从此项目授予 Google Cloud Run 服务代理。”

我正在使用 Google Console Web 界面从 my-builds 项目上的容器注册表中选择要部署的映像。

已经在 [my-builds] 项目上添加了 IAM 权限,尝试了以下两种方法:

[my-webapp-project-number]-compute@developer.gserviceaccount.com => 角色计算图像用户

[my-webapp-project-number]@cloudservices.gserviceaccount.com => 角色计算映像用户

谷歌文档说我应该将 Roles/compute.imageUser 角色赋予:

my-builds 项目上的[my-webapp-project-number]@cloudservices.gserviceaccount.com,但我无法让它工作。

Google 文档使用来自其他项目的图像,但我不知道它是否适用于 Cloud Run。 https://cloud.google.com/deployment-manager/docs/configuration/using-images-from-other-projects-for-vm-instances#granting_access_to_images

预先感谢您对此的任何帮助

google-cloud-run

11
推荐指数
2
解决办法
9350
查看次数

如何从Cloud Run安全地连接到Cloud SQL?

如何在不将我的凭据文件添加到容器内的情况下连接到Cloud SQL上的数据库?

google-cloud-sql google-cloud-run

10
推荐指数
1
解决办法
975
查看次数

从 Google Cloud Run 执行日志记录的最简单方法

我按照本指南https://firebase.google.com/docs/hosting/cloud-run来设置云运行 docker。然后我尝试按照本指南https://cloud.google.com/run/docs/logging执行简单的日志。尝试将结构化日志写入 stdout 这是我的代码:

    trace_header = request.headers.get('X-Cloud-Trace-Context')

    if trace_header:
        trace = trace_header.split('/')
        global_log_fields['logging.googleapis.com/trace'] = "projects/sp-64d90/traces/" + trace[0]

    # Complete a structured log entry.
    entry = dict(severity='NOTICE',
                 message='This is the default display field.',
                 # Log viewer accesses 'component' as jsonPayload.component'.
                 component='arbitrary-property',
                 **global_log_fields)

    print(json.dumps(entry))
Run Code Online (Sandbox Code Playgroud)

我在 Cloud Logs Viewer 中看不到此日志。每次调用 docker 时,我都会看到 http Get 日志。我错过了什么吗?我对此很陌生,想知道假设我创建的 docker 完全按照指南中的步骤(https://firebase.google.com/docs/hosting/cloud)记录信息并查看它的简单方法是什么-运行)

谢谢

python logging docker google-cloud-run

10
推荐指数
2
解决办法
3987
查看次数

Google Cloud Build - 传递 Dockerfile 的环境变量

I\xc2\xb4m 尝试将我的 Angular 应用程序进行 dockerize 以用于 Cloud Run,然后根据环境变量使用生产或开发配置有条件地构建它。

\n

云构建命令

\n

gcloud builds submit --tag gcr.io/project-id/image-id --timeout=1200

\n

Dockerfile

\n
FROM node:14\n\nWORKDIR usr/src/app\n\nCOPY package*.json ./\n\nRUN npm install\n\n# Copy local code to the container\nCOPY . .\n\n# Build app\nRUN if [ "$ENV" = "development" ] ; then npm run build-dev:ssr ; else npm run build-prod:ssr ; fi\n\nCMD ["npm", "run", "serve:ssr"]\n
Run Code Online (Sandbox Code Playgroud)\n

目前,$ENV\xc2\xb4t 不存在,但是有没有办法通过命令传递它gcloud build submit

\n

google-cloud-build google-cloud-run

10
推荐指数
1
解决办法
1万
查看次数

停止运行 Cloud Run 服务 - 安全原因

假设我运行Cloud RunGoogle 的一项服务。我们还假设有人想要真正伤害您并找出所有 API 路由,或者能够通过向网站发送垃圾邮件来发送大量后期请求。

有一个电子邮件通知,会在您之前设置的某些限制上弹出。

还有没有办法自动切断Cloud Run服务,或者设置暂时离线?我找不到任何好的资源或解决方案。

google-cloud-platform google-cloud-run

10
推荐指数
2
解决办法
9131
查看次数

无法在 Google Cloud Run 上部署 Ubuntu 20.04 Docker 容器

我正在尝试通过 Google Cloud Run 部署一个基于 Ubuntu 20.04 的简单的基于 Python 的 Docker 容器。我已经成功构建了映像,但是当我尝试部署 Cloud Run 服务时,出现以下错误(省略了项目详细信息):

Cloud Run error: Invalid argument error. Invalid ENTRYPOINT. [name: "gcr.io/{PROJECT_ID}/{SERVICE_NAME}@sha256:{HASH}"
error: "Invalid command \"/bin/sh\": fil
  e not found"
  e not found"
]....failed
Deployment failed
Run Code Online (Sandbox Code Playgroud)

不过,奇怪的是,如果我在本地拉取并运行映像,它就可以正常工作。

docker run --rm --publish 5000:5000 -e PORT=5000 -it gcr.io/{PROJECT_ID}/{SERVICE_NAME}@sha256:{HASH}
Run Code Online (Sandbox Code Playgroud)

我的 Dockerfile 是最基本的:

FROM ubuntu:20.04

COPY . /app
WORKDIR /app

RUN apt-get update \
    && DEBIAN_FRONTEND=noninteractive apt-get install -y python3 python3-pip \
    && pip3 install gunicorn Flask flask-cors

CMD exec gunicorn …
Run Code Online (Sandbox Code Playgroud)

ubuntu docker google-cloud-run

9
推荐指数
1
解决办法
625
查看次数