本頁說明如何從現有容器映像檔建立及更新 Cloud Run 作業。Cloud Run 服務會監聽及處理要求,但 Cloud Run 工作只會執行工作,完成後就會結束。工作不會監聽或處理要求。
建立或更新工作後,您可以執行下列操作:
您可以將工作架構為單一工作,或多個可平行執行的獨立工作 (最多 10,000 個工作)。每個工作都會執行一個容器執行個體,且可設定在失敗時重試。每項工作都會知道自己的索引,並儲存在 CLOUD_RUN_TASK_INDEX 環境變數中。工作總數會儲存在 CLOUD_RUN_TASK_COUNT 環境變數中。如果您要平行處理資料,程式碼必須負責判斷哪個工作處理哪個資料子集。
您可以為工作設定逾時時間,並指定工作失敗時的重試次數。如果任何工作超過重試次數上限,該工作就會標示為「失敗」。如果任何工作失敗,Cloud Run 嘗試執行所有工作後,工作執行作業就會標示為「失敗」。
根據預設,每項工作最多執行 10 分鐘。您可以變更工作逾時設定,修改預設值,最長可達 168 小時 (7 天)。如果工作使用 GPU,逾時時間上限為 1 小時。
工作執行作業沒有明確的逾時時間:所有工作完成後,工作執行作業就會完成。
作業會使用第二代執行環境。
必要的角色
如要取得建立 Cloud Run 作業所需的權限,請要求管理員授予下列 IAM 角色:
-
Cloud Run 開發人員 (
roles/run.developer) 在 Cloud Run 工作上 -
服務帳戶使用者 (
roles/iam.serviceAccountUser) 服務身分 -
Artifact Registry 讀取者 (
roles/artifactregistry.reader) 在作業容器映像檔的 Artifact Registry 存放區中
如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱「Cloud Run IAM 角色」和「Cloud Run IAM 權限」。如果 Cloud Run 作業與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱「部署權限」和「管理存取權」。
支援的容器登錄和映像檔
您可以直接使用儲存在 Artifact Registry 或 Docker Hub 的容器映像檔。Google 建議使用 Artifact Registry。 Docker Hub 映像檔最多會快取一小時。
如要使用其他公開或私人註冊資料庫 (例如 JFrog Artifactory、Nexus 或 GitHub Container Registry) 的容器映像檔,請設定 Artifact Registry 遠端存放區。
只有在部署熱門容器映像檔 (例如 Docker 官方映像檔或 Docker 贊助的 OSS 映像檔) 時,才應考慮使用 Docker Hub。 如要提高可用性,Google 建議使用 Artifact Registry 遠端存放區部署這些 Docker Hub 映像檔。
從 Docker Hub 或 Artifact Registry 遠端存放區 (含外部登錄檔) 部署時,Cloud Run 不支援大於 9.9 GB 的容器映像檔層。
建立新工作
您可以使用 Google Cloud 控制台、Google Cloud CLI、YAML 或 Terraform 建立新工作。
控制台
如要建立新工作,請按照下列步驟操作:
前往 Google Cloud 控制台的 Cloud Run 頁面:
從 Cloud Run 導覽選單中選取「工作」,然後按一下「部署容器」,顯示「建立工作」表單。
按一下「Container(s), Volumes, Networking, Security」,設定其他工作屬性。
- 「任務負荷能力」下方:
- 在「記憶體」選單中,指定所需記憶體大小。 預設值為最低需求,也就是 512 MiB。
- 在「CPU」選單中,指定所需的 CPU 數量。預設值為最低需求,也就是 1 個 CPU。
在「工作逾時」下方,以秒為單位指定工作可執行的最長時間,最多 168 小時 (7 天)。如為使用 GPU 的工作,逾時時間上限為 1 小時。每項工作都必須在這個時間內完成。預設值為 10 分鐘。
在「每項失敗工作的重試次數」下方,指定工作失敗時的重試次數。預設值為 3 次重試。
在「平行處理」下方:
- 在大多數情況下,您可以選取「盡可能並行執行更多工作」。
- 如果因為工作存取資源的調度限制,需要設定下限,請選取「限制並行任務數量上限」,並在「自訂平行處理限制」欄位中指定並行任務數量。
視需要前往適當的分頁,設定其他選項:
設定完工作後,請按一下「建立」,在 Cloud Run 中建立工作。
gcloud
如要使用指令列,您必須先設定 gcloud CLI。
如要建立新工作,請按照下列步驟操作:
執行下列指令:
或者,使用部署指令:gcloud run jobs create JOB_NAME --image IMAGE_URL OPTIONS
gcloud run jobs deploy JOB_NAME --image IMAGE_URL OPTIONS
更改下列內容:
JOB_NAME:要建立的工作名稱,如果省略這個參數,執行指令時系統會提示您輸入工作名稱。- IMAGE_URL:容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/job:latest。 視需要將
OPTIONS替換為下列任一選項:選項 說明 --tasks接受大於或等於 1 的整數。預設值為 1,上限為 10,000。每個工作都會取得環境變數 CLOUD_RUN_TASK_INDEX,其值介於 0 和工作數減 1 之間,以及CLOUD_RUN_TASK_COUNT,也就是工作數--max-retries失敗工作的重試次數。如果任何工作失敗次數超過此限制,整個工作就會標示為「失敗」。舉例來說,如果設為 1,失敗的工作會重試一次,總共嘗試兩次。預設值為 3。接受 0 到 10 之間的整數。 --task-timeout接受「2s」等時間長度。預設為 10 分鐘,最長為 168 小時 (7 天)。如果工作使用 GPU,逾時時間上限為 1 小時。 --parallelism可平行執行的工作數量上限。依預設,系統會盡快平行啟動工作。如需值範圍,請參閱「平行處理」。 --execute-now如果設定此屬性,系統會在工作建立後立即啟動工作執行。等同於先呼叫 gcloud run jobs create,再呼叫gcloud run jobs execute。除了上述選項,您也可以指定更多設定,例如環境變數或記憶體限制。
如需建立工作時可用的完整選項清單,請參閱 gcloud run jobs create 指令列說明文件。
等待工作建立完成。完成後,畫面上會顯示成功訊息。
YAML
您可以將工作規格儲存在 YAML 檔案中,然後使用 gcloud CLI 部署。
建立新的
job.yaml檔案,並加入以下內容:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE_URL
更改下列內容:
- JOB:Cloud Run 工作的名稱。 工作名稱不得超過 49 個字元,且每個區域和專案的名稱不得重複。
- IMAGE_URL:容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/job:latest。
您也可以指定更多設定,例如環境變數或記憶體限制。
使用下列指令部署新工作:
gcloud run jobs replace job.yaml
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定的google_cloud_run_v2_job
資源中新增下列項目:用戶端程式庫
如何透過程式碼建立工作:
REST API
如要建立工作,請將 POST HTTP 要求傳送至 Cloud Run Admin API jobs 端點。
例如使用 curl:
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X POST \ -d '{template: {template: {containers: [{image: "IMAGE_URL"}]}}}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs?jobId=JOB_NAME
更改下列內容:
- ACCESS_TOKEN:具有建立工作權限的帳戶有效存取權杖。
舉例來說,如果您已登入 gcloud,可以使用
gcloud auth print-access-token擷取存取權杖。在 Cloud Run 容器執行個體中,您可以使用容器執行個體中繼資料伺服器擷取存取權杖。 - JOB_NAME:要建立的工作名稱。
- IMAGE_URL:容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/job:latest。 - REGION:職缺的 Google Cloud 區域。
- PROJECT_ID: Google Cloud 專案 ID。
Cloud Run 位置
Cloud Run 具有「地區性」,這表示執行 Cloud Run 服務的基礎架構位於特定地區,並由 Google 代管,可為該地區內所有區域提供備援功能。
選擇 Cloud Run 服務的執行地區時,請將延遲時間、可用性或耐用性需求做為主要考量。一般而言,您可以選擇最靠近使用者的地區,但您應考量 Cloud Run 服務所使用的其他 Google Cloud
產品位置。使用分散在不同位置的 Google Cloud 產品,可能會影響服務的延遲時間和費用。
Cloud Run 可在下列地區使用:
採用級別 1 定價
asia-east1(臺灣)asia-northeast1(東京)asia-northeast2(大阪)asia-south1(印度孟買)europe-north1(芬蘭)二氧化碳排放量低
europe-north2(斯德哥爾摩)二氧化碳排放量低
europe-southwest1(馬德里)二氧化碳排放量低
europe-west1(比利時)二氧化碳排放量低
europe-west4(荷蘭)二氧化碳排放量低
europe-west8(米蘭)europe-west9(巴黎)二氧化碳排放量低
me-west1(特拉維夫)northamerica-south1(墨西哥)us-central1(愛荷華州)二氧化碳排放量低
us-east1(南卡羅來納州)us-east4(北維吉尼亞州)us-east5(哥倫布)us-south1(達拉斯)二氧化碳排放量低
us-west1(奧勒岡州)二氧化碳排放量低
採用級別 2 定價
africa-south1(約翰尼斯堡)asia-east2(香港)asia-northeast3(韓國首爾)asia-southeast1(新加坡)asia-southeast2(雅加達)asia-south2(印度德里)australia-southeast1(雪梨)australia-southeast2(墨爾本)europe-central2(波蘭華沙)europe-west10(柏林)europe-west12(杜林)europe-west2(英國倫敦)二氧化碳排放量低
europe-west3(德國法蘭克福)europe-west6(瑞士蘇黎世)二氧化碳排放量低
me-central1(杜哈)me-central2(達曼)northamerica-northeast1(蒙特婁)二氧化碳排放量低
northamerica-northeast2(多倫多)二氧化碳排放量低
southamerica-east1(巴西聖保羅)二氧化碳排放量低
southamerica-west1(智利聖地牙哥)二氧化碳排放量低
us-west2(洛杉磯)us-west3(鹽湖城)us-west4(拉斯維加斯)
如果您已建立 Cloud Run 服務,即可在 Google Cloud 控制台的 Cloud Run 資訊主頁中查看地區。
建立新工作時,Cloud Run 服務代理程式必須能夠存取容器 (預設情況下可以)。
更新現有職缺
即使容器映像檔沒有變更,只要變更任何設定,就必須更新工作。請注意,如果設定未變更,系統會繼續使用先前的設定。
您可以使用 Google Cloud 控制台、Google Cloud CLI、YAML 或 Terraform 更新現有工作。
控制台
如要更新現有工作:
前往 Google Cloud 控制台的 Cloud Run 頁面:
按一下 Cloud Run 導覽選單中的「工作」,即可顯示工作清單。
按一下工作,即可顯示「工作詳細資料」頁面。
按一下 [編輯]。
如果變更了工作程式碼,請指定新的容器映像檔摘要。
視需要變更工作中的任務數量。
您也可以按一下「Container(s), Volumes, Networking, Security」,更新任何其他工作屬性:
- 「任務負荷能力」下方:
- 在「記憶體」選單中,指定所需記憶體大小。 預設值為最低需求,也就是 512 MiB。
- 在「CPU」選單中,指定所需的 CPU 數量。預設值為最低需求,也就是 1 個 CPU。
- 在「工作逾時」下方,以秒為單位指定工作可執行的最長時間,最多 168 小時 (7 天)。每項工作都必須在這個時間內完成。預設值為 10 分鐘 (600 秒)。
- 在「每項失敗工作的重試次數」下方,指定工作失敗時的重試次數。預設值為 3 次重試。
在「平行處理」下方:
- 在大多數情況下,您可以選取「盡可能並行執行更多工作」。
- 如果因工作存取資源的調度限制,需要設定下限,請選取「限制並行工作數量」,並在「自訂平行處理量限制」欄位中指定並行工作數量上限。
視需要前往適當的分頁,設定其他選項:
設定完工作後,按一下「儲存」,在 Cloud Run 中建立工作,並等待工作建立完成。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
執行下列指令:
gcloud run jobs update JOB_NAME
更改下列內容:
JOB_NAME:要更新的工作名稱。(選用) 請使用下列選項取代
OPTIONS:選項 說明 --tasks可接受大於或等於 1 的整數。預設值為 1,上限為 10,000。每個工作都會取得環境變數 CLOUD_RUN_TASK_INDEX,其值介於 0 和工作數減 1 之間,以及CLOUD_RUN_TASK_COUNT,也就是工作數--max-retries失敗工作的重試次數。如果任何工作失敗次數超過此限制,整個工作就會標示為「失敗」。舉例來說,如果設為 1,失敗的工作會重試一次,總共嘗試兩次。預設值為 3。接受 0 到 10 之間的整數。--task-timeout接受「2s」等時間長度。預設為 10 分鐘,最長為 168 小時 (7 天)。 --parallelism可平行執行的工作數量上限。依預設,系統會盡快平行啟動工作。如需值範圍,請參閱「平行處理」。
除了上述選項,您還可以設定其他選用設定:
如需建立工作時可用的完整選項清單,請參閱 gcloud run jobs create 指令列說明文件。
等待工作更新完成。成功完成時,畫面會顯示類似以下的成功訊息:
Job [JOB_NAME] has been successfully updated. View details about this job by running `gcloud run jobs describe JOB_NAME`. See logs for this execution at: https://console.cloud.google.com/logs/viewer?project=PROJECT_ID&resource=cloud_run_revision/service_name/JOB_NAME
- ACCESS_TOKEN:帳戶的有效存取權杖,該帳戶須具備更新工作的 IAM 權限。
舉例來說,如果您已登入 gcloud,可以使用
gcloud auth print-access-token擷取存取權杖。在 Cloud Run 容器執行個體中,您可以使用容器執行個體中繼資料伺服器擷取存取權杖。 - JOB_NAME:要更新的工作名稱。
- IMAGE_URL:容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/job:latest。 - REGION:職缺的 Google Cloud 區域。
- PROJECT_ID: Google Cloud 專案 ID。
YAML
如要下載或查看現有作業的設定,請使用下列指令將結果儲存至 YAML 檔案:
gcloud run jobs describe JOB --format export > job.yaml
從工作設定 YAML 檔案中,視需要修改任何 spec.template 子項屬性,更新設定,然後重新部署:
Terraform
使用 terraform apply 指令,在 main.tf 檔案中變更工作設定。如需詳細的 Terraform 操作說明,請參閱下列主題:
詳情請參閱 terraform apply 指令列選項。
用戶端程式庫
如要透過程式碼更新現有工作:
REST API
如要更新作業,請將 PATCH HTTP 要求傳送至 Cloud Run Admin API jobs 端點。
例如使用 curl:
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X PATCH \ -d '{template: {template: {containers: [{image: "IMAGE_URL"}]}}}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME
更改下列內容:
程式碼範例
如需顯示職缺的程式碼範例,請參閱特定語言的快速入門導覽課程。
將多個容器部署至工作 (Sidecar)
在部署多個容器 (Sidecar) 的 Cloud Run 工作中,有一個主要工作容器會封裝工作設定,以及一或多個 Sidecar 容器。
每個執行個體最多可部署 10 個容器,包括主要工作容器。執行個體中的所有容器共用相同的網路命名空間,且可使用記憶體內共用磁碟區共用檔案。
用途
Sidecar 的常見用途如下:
- 使用 Prometheus 或 Opentelemetry 等收集器代理程式,從 Cloud Run 工作擷取自訂指標,並傳送至您選擇的指定後端。
- 讓未內建 Hashicorp Vault 邏輯的應用程式使用 Vault Sidecar,從 Vault 取得靜態和動態密鑰。
部署含有 Sidecar 容器的工作
您可以使用Google Cloud 控制台、Google Cloud CLI 或 YAML,將多個 Sidecar 部署至 Cloud Run 工作。
按一下分頁標籤,瞭解如何使用自選工具。
控制台
前往 Google Cloud 控制台的 Cloud Run 頁面:
如要部署至現有工作,請按一下「Jobs」(工作),在工作清單中找出工作,然後按一下開啟,再按一下「View and edit configuration」(查看及編輯設定),顯示編輯工作表單。
如要建立新工作,請依序點選「Deploy container」(部署容器) 和「Job」(工作)。提供工作名稱和要部署的主要工作容器映像檔網址。
按一下「Container(s), Volumes, Networking, Security」
在「Edit container」資訊卡中,視需要設定主要工作容器。
按一下「新增容器」,然後設定要與主要工作容器一起新增的 Sidecar 容器。如果補充資訊容器依附於服務中的另一個容器,請在「Container start-up order」(容器啟動順序) 下拉式選單中指出這點。針對您部署的每個 Sidecar 容器重複執行這個步驟。
按一下新服務的「建立」或現有作業的「更新」,然後等待部署完成。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
如要將多個容器部署至 Job,請執行下列指令:
gcloud run jobs create JOB \ --container JOB_CONTAINER_NAME \ --image='IMAGE_URL' \ --container SIDECAR_CONTAINER_NAME \ --image='SIDECAR_IMAGE'
更改下列內容:
- JOB:要部署至的工作名稱。您可以完全省略這個參數,這樣系統會提示您輸入工作名稱。
- JOB_CONTAINER_NAME:主要工作容器的名稱。
- IMAGE_URL:容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/job:latest。 - SIDECAR_CONTAINER_NAME:Sidecar 容器的名稱,例如
sidecar。 - SIDECAR_IMAGE:補充容器映像檔的參照。
如要在部署指令中設定每個容器,請在
container參數後提供每個容器的設定,例如:gcloud run jobs create JOB \ --container CONTAINER_1_NAME \ --image='IMAGE_URL' \ --set-env-vars=KEY=VALUE \ --container SIDECAR_CONTAINER_NAME \ --image='SIDECAR_IMAGE' \ --set-env-vars=KEY_N=VALUE_N
等待作業部署完成。成功完成時,畫面會顯示成功訊息。
- JOB 改成 Cloud Run 主要工作容器的名稱。工作名稱不得超過 49 個字元。
- IMAGE_URL:容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/job:latest。 - SIDECAR_IMAGE:補充容器映像檔的參照。
- JOB_NAME:Cloud Run 工作的名稱。
- CONTAINER_NAME:容器名稱。
- IMAGE_URL:容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/job:latest。 - SIDECAR_CONTAINER_NAME:補充容器的名稱。
- SIDECAR_IMAGE_URL:補充容器映像檔的參照。
YAML
這些操作說明會顯示 Cloud Run 工作 (含 Sidecar) 的基本 YAML 檔案。建立名為 job.yaml 的檔案,並在當中加入下列內容:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB spec: template: spec: containers: - image: IMAGE_URL - image: SIDECAR_IMAGE
更改下列內容:
更新 YAML 以納入 Ingress 和 Sidecar 容器後,請使用下列指令部署至 Cloud Run:
gcloud run jobs replace job.yamlTerraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定中,將下列項目新增至google_cloud_run_v2_job 資源:resource "google_cloud_run_v2_job" "default" {
name = "JOB_NAME"
location = "europe-west1"
template {
template {
containers {
name = "CONTAINER_NAME"
image = "IMAGE_URL"
}
containers {
name = "SIDECAR_CONTAINER_NAME"
image = "SIDECAR_IMAGE_URL"
}
}
}
}
更改下列內容:
可供部署作業使用的 Sidecar 功能
如果部署作業有多個容器,且您有相依性,需要先啟動某些容器,才能啟動部署作業中的其他容器,則可以指定容器啟動順序。
如果容器依附於其他容器,您必須在部署作業中使用啟動健康狀態檢查。如果您使用健康狀態檢查,Cloud Run 會按照容器啟動順序檢查每個容器的健康狀態,確保每個容器都順利通過檢查,才會啟動下一個容器。如果您未使用健康狀態檢查,即使容器所依附的容器未執行,健康狀態良好的容器也會啟動。
單一執行個體中的多個容器可以存取共用的記憶體內磁碟區,每個容器都能透過您建立的掛接點存取該磁碟區。
限制
如果您的作業使用 Cloud Run 的內建功能連線至 Cloud SQL 執行個體,請參閱「內建 Cloud SQL 連線」一文中的已知問題。
後續步驟
建立或更新工作後,您可以執行下列操作: