用途:介绍 Google Cloud Run 这一全托管应用平台,用于运行代码、函数或容器,并管理三类资源:服务(响应 HTTP 请求、无状态实例自动扩缩)、作业(手动或定时执行、可并行、运行至完成)、工作池(常驻后台负载,如 Kafka、Pub/Sub 拉取队列、RabbitMQ 消费者)。
主要能力与用法:
- 前置准备:启用 API,命令为 gcloud services enable run.googleapis.com cloudbuild.googleapis.com --quiet;需要 Cloud Run Admin、Cloud Run Source Developer、Service Account User、Logs Viewer 等角色,并为 Cloud Build 服务账号授予 roles/run.builder。
- 部署服务:可用容器镜像或源码。镜像部署示例:gcloud run deploy SERVICE_NAME --image IMAGE_URL --region us-central1 --allow-unauthenticated --quiet。源码部署可用 --source .,支持 buildpacks 自动构建、Dockerfile 构建,以及预览版 --no-build 直接部署。
- 作业:gcloud run jobs create JOB_NAME --image IMAGE_URL OPTIONS --quiet,支持 --tasks、--max-retries、--task-timeout、--parallelism、--execute-now;执行用 gcloud run jobs execute JOB_NAME --quiet,可加 --wait。
- 工作池:gcloud run worker-pools deploy WORKER_POOL_NAME --image IMAGE_URL --quiet,或加 --source . 从源码部署。
关键限制:部署代码必须监听 0.0.0.0 而非 127.0.0.1,并使用注入的 $PORT 环境变量(默认 8080),否则启动会崩溃。服务名不超过 49 字符且区域内唯一。镜像推荐使用 Artifact Registry,Docker Hub 镜像缓存最长一小时。作业任务数上限 10000,超时默认 10 分钟、最大 168 小时(GPU 任务最大 1 小时)。
排查:权限错误查阅 IAM 文档;启动崩溃或健康检查失败可用 gcloud logging read "resource.labels.service_name=SERVICE_NAME" --limit=20 查看日志;原生依赖问题可从 --no-build 改用 --source .。
适用场景:在 Google Cloud 上部署 HTTP 服务、批处理作业与常驻后台消费者。资料未提供具体收费与价格信息。