创建和管理 Cloud Run 实例

本页面介绍了如何创建和管理可单独寻址的单例 Cloud Run 实例。与根据传入流量扩缩的 Cloud Run 服务不同,实例是专用计算容器,您可以使用生命周期转换(创建、停止、启动、更新、删除)手动管理该容器。

支持的区域

您可以使用任何 Cloud Run 支持的区域来创建 Cloud Run 实例。但是,以下 高延迟区域不受支持

  • us-central1
  • us-east1
  • europe-west1

准备工作

  1. 按照设置页面中的说明 ,为 Cloud Run 设置新项目。

  2. 启用 Cloud Run Admin API:

    gcloud services enable run.googleapis.com
    
  3. gcloud 组件更新到最新版本:

    gcloud components update
  4. 如果您通过网域限制组织政策限制项目的未经身份验证的调用,则您需要按照测试专用服务中的说明访问已部署的服务。

所需的角色

如需获得配置和部署 Cloud Run 实例所需的权限,请让您的管理员为您授予以下 IAM 角色:

如需查看与 Cloud Run 关联的 IAM 角色和权限的列表,请参阅 Cloud Run IAM 角色Cloud Run IAM 权限。 如果您的 Cloud Run 实例与 Google Cloud API(例如 Cloud 客户端库)进行交互,请参阅 服务身份配置指南。 如需详细了解如何授予角色,请参阅 部署权限管理访问权限

创建实例

您可以部署容器映像来创建新实例。如果您未提供名称,系统会自动生成一个名称。

gcloud

如需使用 gcloud beta run instances create 命令创建新的 Cloud Run 实例,请执行以下操作:

gcloud beta run instances create INSTANCE_NAME \
    --image IMAGE_URL \
    --region REGION

如需使用 gcloud beta run instances deploy 命令创建新的 Cloud Run 实例,请执行以下操作:

gcloud beta run instances deploy INSTANCE_NAME \
    --image IMAGE_URL \
    --region REGION

替换以下内容:

  • INSTANCE_NAME:您要创建的实例的名称。实例名称在您的项目和区域中必须是唯一的。您无法创建与现有 Cloud Run 实例或服务同名的实例。
  • IMAGE_URL:对容器映像的引用,例如 us-docker.pkg.dev/cloudrun/container/instances:latest
  • REGION: 运行实例的 Google Cloud 区域,例如 europe-west1

客户端库

如需通过代码创建新实例,请使用以下客户端库:

REST API

如需创建新的 Cloud Run 实例,请向 instances 端点发送 POST HTTP 请求。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "containers": [{
      "image": "IMAGE_URL",
      "ports": [{"containerPort": PORT}]
    }],
    "ingress": "INGRESS_TRAFFIC_ALL",
    "invokerIamDisabled": true,
    "timeout": "3600s"
  }' \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances?instance_id=INSTANCE_NAME"

替换以下内容:

  • IMAGE_URL:您的容器映像网址。
  • PORT:容器监听的端口。
  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • REGION:部署的 Google Cloud 区域。
  • INSTANCE_NAME:新实例的名称。

创建实例后,该实例会收到一个 Cloud Run 网址,其格式如下:

https://INSTANCE_NAME-PROJECT_NUMBER.REGION.run.app

更新实例

当您更新实例(例如其容器映像、端口或环境变量)时,该实例会重启。

gcloud

如需使用 gcloud beta run instances update 命令更新 Cloud Run 实例,请执行以下操作:

gcloud beta run instances update INSTANCE_NAME \
    --image NEW_IMAGE_URL \
    --region REGION

如需使用 gcloud beta run instances deploy 命令更新 Cloud Run 实例,请执行以下操作:

gcloud beta run instances deploy INSTANCE_NAME \
    --image IMAGE_URL \
    --region REGION

REST API

如需通过 API 更新 Cloud Run 实例配置,请向实例 URI 端点发送 PATCH HTTP 请求。

curl -H "Content-Type: application/json" \
  -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -d '{template: {containers: [{image: "IMAGE_URL"}]}}' \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_NAME"

停止实例

使用 stop 命令或方法停止正在运行的 Cloud Run 实例。

gcloud

如需停止实例,请执行以下操作:

gcloud beta run instances stop INSTANCE_NAME \
    --region REGION

客户端库

如需通过代码停止正在运行的实例,请使用以下客户端库:

REST API

如需停止实例,请发送带有 :stop 装饰器的 POST HTTP 请求:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_NAME:stop"

启动或重启实例

使用 start 命令或方法启动已停止的实例,或强制重启现有实例。

gcloud

如需启动或重启实例,请执行以下操作:

gcloud beta run instances start INSTANCE_NAME \
    --region REGION

客户端库

如需通过代码启动已停止的实例,请使用以下客户端库:

REST API

如需启动实例,请发送带有 :start 装饰器的 POST HTTP 请求:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_NAME:start"

查看项目中的实例列表

您可以查看项目中的所有活跃和非活跃实例。

gcloud

如需列出特定区域中的实例,请执行以下操作:

gcloud beta run instances list \
    --region REGION

REGION 替换为运行实例的 Google Cloud 区域 。

客户端库

如需通过代码列出活跃和非活跃实例,请使用以下客户端库:

REST API

如需检索实例列表,请发送 GET HTTP 请求:

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances"

查看实例详情

使用 describe 命令或方法查看配置详情和当前状态。

gcloud

如需描述实例,请执行以下操作:

gcloud beta run instances describe INSTANCE_NAME \
    --region REGION

客户端库

如需通过代码查看实例配置详情和状态,请使用以下客户端库:

REST API

如需描述实例,请发送 GET HTTP 请求:

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_NAME"

删除实例

删除实例可从项目中永久移除其配置、元数据、公共直接网址映射和身份角色。

gcloud

如需删除实例,请执行以下操作:

gcloud beta run instances delete INSTANCE_NAME \
    --region REGION

客户端库

如需通过代码删除实例,请使用以下客户端库:

REST API

如需删除实例,请发送 DELETE HTTP 请求:

curl -X DELETE \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_NAME"

后续步骤