您可以使用直接虛擬私有雲輸出流量,讓 Cloud Run 服務或作業將流量傳送至共用虛擬私有雲網路,且不需要無伺服器虛擬私有雲存取連接器。
本頁說明如何設定 Cloud Run 的 IAM 權限,以使用共用虛擬私有雲網路的子網路,然後將服務或工作放在共用子網路上。
事前準備
限制
Cloud Run 服務、工作和工作站集區有下列限制:
- 使用直接虛擬私有雲輸出時,執行個體啟動時的連線建立作業可能會延遲一分鐘以上。建議您設定 HTTP 啟動探查,在應用程式接受要求前,先測試與應用程式使用的輸出目的地之間的連線。這項輸出連線測試應實作重試機制,或設定適當的週期和門檻設定,讓啟動探查做為重試機制。
- Cloud Run 支援的總處理量上限為每個執行個體 1 Gbps。超過這個數量就會導致效能受到限制。
Cloud Run 用量配額會限制您可設定使用直接虛擬私有雲輸出流量的執行個體數量上限。每個 Cloud Run 修訂版本或工作執行作業設定的數量上限為 100 個。如要提高預設限制,請參閱如何提高配額。
- 在網路基礎架構維護期間,Cloud Run 服務、工作和工作人員集區可能會發生連線中斷情形。建議您使用可處理偶爾連線重設的用戶端程式庫。
- 內部 IPv6 流量的直接虛擬私有雲輸出支援功能僅適用於預先發布版本。
- 私有 NAT 僅適用於預先發布版。
直接虛擬私有雲 egress 不支援下列項目:
- 虛擬私有雲流程記錄不會提供 Cloud Run 服務或修訂版本的名稱。
- 虛擬私人雲端流程記錄不會回報非 VM 資源 (例如 Cloud Run 或地端機器)。
- 封包鏡像
- Network Intelligence Center,包括連線測試
- 透過虛擬私有雲網路傳輸的外部 IPv6 流量
- 輸入防火牆規則中的網路標記或服務身分。
- 防火牆規則無法使用附加至 Cloud Run 工作負載的 Resource Manager 標記。
- 執行時間超過 1 小時的 Cloud Run 工作可能會發生連線中斷情形。在維護作業期間,系統可能會將作業從一部機器遷移至另一部,這時就會發生這種情況。容器會在事件發生前 10 秒收到
SIGTSTP
信號,並在事件發生後收到SIGCONT
信號。容器收到SIGCONT
信號後,請重試連線。
設定 IAM 權限
共用虛擬私有雲服務專案中的 Cloud Run 服務要存取共用虛擬私有雲網路,必須先確保 Cloud Run 服務代理程式有足夠的子網路使用權限。
如要存取共用虛擬私有雲網路,請新增下列其中一個角色,授予 Cloud Run 服務代理程式足夠的權限:
共用虛擬私有雲主專案的「Compute 網路使用者」(
compute.networkUser
)。例如,執行下列指令:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \ --role "roles/compute.networkUser"
更改下列內容:
- HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
- SERVICE_PROJECT_NUMBER:您部署 Cloud Run 服務或作業的共用 VPC 服務專案編號。
共用虛擬私有雲主專案的「Compute Network Viewer」(
compute.networkViewer
),以及共用虛擬私有雲子網路的「Compute Network User」(compute.networkUser
) 角色。舉例來說,如要在子網路上授予 Compute 網路使用者角色,請執行下列指令:
gcloud compute networks subnets add-iam-policy-binding SUBNET_NAME \ --region REGION \ --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \ --role "roles/compute.networkUser" \ --project HOST_PROJECT_ID
更改下列內容:
- SUBNET_NAME:您要執行 Cloud Run 服務的子網路完整資源名稱。
- REGION:Cloud Run 服務的區域,必須與子網路的區域相符。
- SERVICE_PROJECT_NUMBER:您部署 Cloud Run 服務或作業的共用 VPC 服務專案編號。
- HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
Cloud Run 服務代理人需要 Cloud Run 專案的 Cloud Run 服務代理人角色。您可以執行下列指令,確認角色並未手動移除:
gcloud projects get-iam-policy SERVICE_PROJECT_ID \ --flatten bindings \ --filter "bindings.role:roles/run.serviceAgent"
將 SERVICE_PROJECT_ID 替換為 Cloud Run 服務或作業的專案 ID。
如要進行更精細的控制,請確保 Cloud Run 服務代理具備下列權限:
- 共用虛擬私有雲主專案的
compute.networks.get
- 主專案或特定子網路的
compute.subnetworks.get
權限 - 主專案或特定子網路的
compute.subnetworks.use
權限 - 共用虛擬私有雲服務專案中的
compute.addresses.get
- 共用虛擬私有雲服務專案中的
compute.addresses.list
- 共用虛擬私有雲服務專案中的
compute.addresses.createInternal
- 共用虛擬私有雲服務專案中的
compute.addresses.deleteInternal
- 共用虛擬私有雲服務專案中的
compute.regionOperations.get
IP 位址分配
如要將 Cloud Run 服務、工作或工作者集區放在虛擬私有雲網路上,請指定虛擬私有雲網路或子網路,或同時指定兩者。如果您只指定網路,子網路會使用與網路相同的名稱。Cloud Run 會從子網路分配 IP 位址。
IP 位址是暫時性的,因此請勿根據個別 IP 建立政策。 如要根據 IP 位址建立政策 (例如防火牆規則),您必須使用整個子網路的 IP 位址範圍。
如要變更服務、作業或工作站集區使用的網路或子網路,請部署新的修訂版本,或執行使用新網路和子網路值的新作業工作。
擴大和縮減規模
如要在流量暴增期間加快擴充速度,Cloud Run 會一次保留 16 個 IP 位址 (28
子網路遮罩)。查看 Cloud Run 分配的 IP 位址。為確保您有足夠的 IPv4 位址可供 Cloud Run 使用,子網路的 IPv4 位址範圍必須為 /26
或更大。
為提高 IP 位址分配效率並簡化管理作業,請將多項資源放在同一個子網路上。如果 IPv4 位址空間有限,請參閱「支援的 IPv4 範圍」一文,瞭解更多選項。
如要刪除子網路,請先刪除或重新部署 Cloud Run 服務、工作或工作站集區,停止使用子網路,然後等待 1 到 2 小時。
服務和工作站集區的 IP 位址用量
在穩定狀態下,Cloud Run 使用的 IP 位址數量是執行個體數量的 2 倍 (2X)。當修訂版本縮減時,Cloud Run 最多會保留 IP 位址 20 分鐘。總共保留的 IP 位址數量至少是 2 倍,外加緩衝區,以因應修訂更新。
舉例來說,如果您升級修訂版本,讓 revision 1
從 100 個執行個體縮減為零,而 revision 2
從零擴充為 100 個,Cloud Run 會在縮減後保留 revision 1
IP 位址最多 20 分鐘。在 20 分鐘的保留時間內,您必須保留至少 400 個 IP 位址 ((100 + 100) * 2
)。
工作使用的 IP
如果是 Cloud Run 工作,每項工作在執行期間會耗用 1 個 IP 位址,執行完畢後還會耗用 7 分鐘。請確認子網路夠大,可容納所有並行執行的工作任務,且至少需要 /26
子網路預留空間。
例如:
- 單一工作每天執行,且一律會在下次執行前至少 7 分鐘完成,最多會耗用子網路中的 1 個 IP 位址。
- 假設有 10 項工作每 10 分鐘執行一次,每項工作執行 15 分鐘,則每項工作會耗用 1 個 IP 位址 22 分鐘 (3 項工作同時執行會耗用 IP 位址),如下例所示。因此,這項工作在穩定狀態下會耗用 30 個 IP 位址。
- 如果單一工作需要 1 分鐘才能執行,且每分鐘執行 100 次,則大約需要 800 個 IP 位址,實際數量取決於執行時間。
支援的 IPv4 範圍
Cloud Run 支援下列子網路 IPv4 範圍:
部署服務
使用直接虛擬私有雲輸出功能,Cloud Run 服務就能將流量傳送至共用虛擬私有雲網路,不必使用無伺服器虛擬私有雲存取連接器。網路費用會隨著服務本身調度率降至零。您也可以直接在 Cloud Run 服務修訂版本中新增網路標記,以進行更精細的網路安全設定,例如套用 VPC 防火牆規則。
您可以透過Google Cloud 控制台、Google Cloud CLI 或 YAML,為服務設定 Direct VPC 輸出。
控制台
前往 Google Cloud 控制台的 Cloud Run 頁面:
從選單中選取「服務」,然後按一下「部署容器」,設定新服務。如要設定及部署現有服務,請按一下該服務,然後點選「編輯並部署新修訂版本」。
如要設定新服務,請視需要填寫初始服務設定頁面,然後按一下「Container(s), Volumes, Networking, Security」(容器、磁碟區、網路、安全性),展開服務設定頁面。
按一下 [網路] 分頁標籤。
按一下「連線至虛擬私有雲,以傳出流量」。
按一下「直接將流量傳送至虛擬私有雲」。
選取「與我共用的網路」。
在「Network」(網路) 欄位中,選取要將流量傳送至的 Shared VPC 網路。
在「Subnet」(子網路) 欄位中,選取服務接收 IP 位址的子網路。
選用:輸入要與服務建立關聯的網路標記名稱。網路標記是在修訂版本層級指定。每個服務修訂版本可以有不同的網路標記,例如
network-tag-2
。在「流量轉送」中,選取下列其中一個選項:
- 僅將傳至私人 IP 的要求轉送至虛擬私有雲,只透過共用虛擬私有雲網路將流量傳送至內部位址。
- 將所有流量轉送至虛擬私有雲,透過共用虛擬私有雲網路傳送所有輸出流量。
按一下 [Create] (建立) 或 [Deploy] (部署)。
如要確認服務是否位於共用虛擬私有雲網路,請按一下服務,然後按一下「網路」分頁標籤。網路和子網路會列在「VPC」資訊卡中。
現在,您可以根據防火牆規則,從 Cloud Run 服務將要求傳送至共用 VPC 網路上的任何資源。
gcloud
如要將服務放在共用子網路上,請執行下列指令,指定共用 VPC 網路和子網路的完整資源名稱:
gcloud run deploy SERVICE_NAME \ --image IMAGE_URL \ --network projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --network-tags NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region REGION \ --max-instances MAX
更改下列內容:
- SERVICE_NAME:Cloud Run 服務名稱。
- IMAGE_URL:服務的圖片網址。
- HOST_PROJECT_ID:共用虛擬私有雲專案的 ID。
- VPC_NETWORK:共用虛擬私有雲網路的完整資源名稱。
- REGION:Cloud Run 服務的區域,必須與子網路的區域相符。
- SUBNET_NAME:子網路的完整資源名稱。
- 選用:NETWORK_TAG_NAMES,以半形逗號分隔您要與服務建立關聯的網路標記名稱。如果是服務,網路標記是在修訂版本層級指定。每個服務修訂版本可以有不同的網路標記,例如
network-tag-2
。 - EGRESS_SETTING 具有
傳出設定值:
all-traffic
:透過共用虛擬私有雲網路傳送所有輸出流量。private-ranges-only
:只透過共用虛擬私有雲網路將流量傳送至內部位址。
- MAX:共用 VPC 網路可使用的執行個體數量上限。服務允許的執行個體數量上限為 100 個。
如要瞭解詳情和選用引數,請參閱 gcloud
參考資料。
YAML
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
更新下列屬性:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
取代:
- SERVICE_NAME 改為您的 Cloud Run 服務名稱。服務名稱不得超過 49 個字元,且每個區域和專案的服務名稱都必須是唯一的。
- REGION,並將其替換為 Cloud Run 服務的地區,該地區必須與子網路的地區相符。
- 將 NETWORK 替換為共用虛擬私有雲端網路的完整資源名稱。
- SUBNET_NAME,並換成子網路的完整資源名稱。
- 選用:NETWORK_TAG_NAMES,您要與服務建立關聯的網路標記名稱。如果是服務,網路標記是在修訂版本層級指定。每個服務修訂版本可以有不同的網路標記,例如
network-tag-2
。 - EGRESS_SETTING 具有
傳出設定值:
all-traffic
:透過共用虛擬私有雲網路傳送所有輸出流量。private-ranges-only
:只透過共用虛擬私有雲網路將流量傳送至內部位址。
- IMAGE 改為服務容器映像檔的網址。
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
請將以下內容新增到您的
main.tf
檔案中:
如要允許未經驗證的存取服務,可以公開服務。
建立工作
使用直接虛擬私有雲輸出功能,Cloud Run 作業就能將流量傳送至共用虛擬私有雲網路,不必使用無伺服器虛擬私有雲存取連接器。您也可以直接在 Cloud Run 作業中新增網路標記,進一步提升網路安全性,例如套用 VPC 防火牆規則。
您可以透過Google Cloud 主控台、Google Cloud CLI 或 YAML,為工作設定直接 VPC 輸出。
控制台
前往 Google Cloud 控制台的 Cloud Run 頁面:
如要設定新工作,請按一下「部署容器」,然後選取「工作」,視需要填寫初始的「建立工作」表單。如要設定現有工作,請按一下「Jobs」分頁標籤,選取工作,然後按一下「Edit」。
按一下「Container, Variables & Secrets, Connections, Security」(容器、變數和密鑰、連線、安全性),展開工作屬性頁面。
按一下「連結」分頁標籤。
按一下「連線至虛擬私有雲,以傳出流量」。
按一下「直接將流量傳送至虛擬私有雲」。
選取「與我共用的網路」。
在「Network」(網路) 欄位中,選取要將流量傳送至的 Shared VPC 網路。
在「Subnet」(子網路) 欄位中,選取工作接收 IP 位址的子網路。
選用:輸入要與工作建立關聯的網路標記名稱。如果是作業,網路標記是在執行層級指定。每次執行作業時,可以有不同的網路標記,例如
network-tag-2
。在「流量轉送」中,選取下列其中一個選項:
- 僅將傳至私人 IP 的要求轉送至虛擬私有雲,只透過共用虛擬私有雲網路將流量傳送至內部位址。
- 將所有流量轉送至虛擬私有雲,透過共用虛擬私有雲網路傳送所有輸出流量。
按一下「建立」或「更新」。
如要確認作業是否位於共用 VPC 網路,請按一下作業,然後按一下「設定」分頁標籤。網路和子網路會列在「VPC」資訊卡中。
現在您可以執行 Cloud Run 工作,並根據防火牆規則,從工作向共用虛擬私有雲網路上的任何資源傳送要求。
gcloud
如要將作業放在共用子網路上,請執行下列指令,指定共用虛擬私有雲網路和子網路的完整資源名稱:
gcloud run jobs create JOB_NAME \ --image IMAGE_URL \ --network projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --network-tags NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region REGION \
更改下列內容:
- JOB_NAME:Cloud Run 工作的名稱。
- IMAGE_URL:職缺的圖片網址。
- HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
- VPC_NETWORK:共用虛擬私有雲網路的完整資源名稱。
- REGION:Cloud Run 作業的區域,必須與子網路的區域相符。
- SUBNET_NAME:子網路的完整資源名稱。
- 選用:NETWORK_TAG_NAMES,並以半形逗號分隔要與工作建立關聯的網路標記名稱。每次執行作業時,可以有不同的網路標記,例如
network-tag-2
。 - EGRESS_SETTING 具有
傳出設定值:
all-traffic
:透過共用虛擬私有雲網路傳送所有輸出流量。private-ranges-only
:只透過共用虛擬私有雲網路將流量傳送至內部位址。
如要瞭解詳情和選用引數,請參閱 gcloud
參考資料。
YAML
如果您要建立新工作,請略過這個步驟。 如要更新現有工作,請下載其 YAML 設定:
gcloud run jobs describe JOB_NAME --format export > job.yaml
更新下列屬性:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME annotations: run.googleapis.com/launch-stage: BETA labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
取代:
- 將 JOB_NAME 替換為 Cloud Run 作業的名稱。工作名稱不得超過 49 個字元,且每個區域和專案都必須使用不重複的名稱。
- REGION,且必須與子網路的區域相同。
- 將 NETWORK 替換為共用虛擬私有雲端網路的完整資源名稱。
- 將 SUBNET 替換為子網路的完整資源名稱。
- 選用:NETWORK_TAG_NAMES 輸入要與工作建立關聯的聯播網代碼名稱。如果是作業,網路標記是在執行層級指定。每次執行作業時,可以有不同的網路標記,例如
network-tag-2
。 - EGRESS_SETTING 具有
傳出設定值:
all-traffic
:透過共用虛擬私有雲網路傳送所有輸出流量。private-ranges-only
:只透過共用虛擬私有雲網路將流量傳送至內部位址。
- IMAGE 改為工作容器映像檔的網址。
使用下列指令建立或更新作業:
gcloud run jobs replace job.yaml
設定雙重堆疊子網路
如要在 Cloud Run 服務或工作中新增具有內部 IPv6 範圍的雙重堆疊子網路,請參閱「設定雙重堆疊子網路」。
取消連結服務
控制台
如要從共用虛擬私有雲網路移除服務,請按照下列步驟操作:
前往 Google Cloud 控制台的 Cloud Run 頁面:
按一下要移除的服務,然後點選「編輯及部署新的修訂版本」。
按一下 [網路] 分頁標籤。
清除「連線至虛擬私有雲,以傳出流量」。
按一下 [Deploy] (部署)。
如要確認服務已不再使用共用虛擬私有雲網路,請按一下「網路」分頁標籤。網路和子網路不再列於「虛擬私有雲」資訊卡中。
如要只移除網路標記,但保留服務與共用 VPC 網路的連線:
按一下含有要移除網路代碼的服務,然後點選「編輯並部署新修訂版本」。
按一下 [網路] 分頁標籤。
清除您不想再與服務建立關聯的網路標記名稱。
按一下 [Deploy] (部署)。
gcloud
如要從共用虛擬私有雲網路中移除服務,請執行下列指令:
gcloud run services update SERVICE_NAME --region=REGION \ --clear-network
如要只移除網路標記,但保留服務與共用 VPC 網路的連線,請執行下列指令:
gcloud run services update SERVICE_NAME --region=REGION \ --clear-network-tags
更改下列內容:
- SERVICE_NAME:Cloud Run 服務名稱。
- REGION:Cloud Run 服務的區域。
YAML
如要從共用虛擬私有雲網路移除服務,請按照下列步驟操作:
下載服務的 YAML 設定:
gcloud run services describe SERVICE_NAME --format export > service.yaml
從
service.yaml
檔案中移除下列內容:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
地點
- NETWORK:共用虛擬私有雲網路的完整資源名稱。
- SUBNET:子網路的完整資源名稱。
- 選用:NETWORK_TAG_NAMES:網路標記的名稱 (如已與服務建立關聯)。
使用下列指令更新服務:
gcloud run services replace service.yaml
如要只移除網路標記,但保留服務與共用 VPC 網路的連線:
下載服務的 YAML 設定:
gcloud run services describe SERVICE_NAME --format export > service.yaml
從
service.yaml
檔案的內容中移除tags
變數,保留network
和subnetwork
變數,如下例所示:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'
更改下列內容:
- NETWORK:共用虛擬私有雲網路的完整資源名稱。
- SUBNET:子網路的完整資源名稱。
使用下列指令更新服務:
gcloud run services replace service.yaml
取消連結工作
控制台
如要從共用虛擬私有雲網路中移除作業,請按照下列步驟操作:
前往 Google Cloud 控制台的 Cloud Run 頁面:
按一下要移除的工作,然後點選「Edit and deploy new revision」(編輯及部署新的修訂版本)。
按一下 [設定] 標籤。
清除「連線至虛擬私有雲,以傳出流量」。
按一下「Update」。
如要確認作業是否已不在共用 VPC 網路上,請按一下「Configuration」(設定) 分頁標籤。網路和子網路不再列於「VPC」資訊卡中。
如要只移除網路標記,但讓工作繼續連線至共用 VPC 網路,請按照下列步驟操作:
按一下含有要移除網路標記的工作,然後按一下「編輯並部署新修訂版本」。
按一下「連結」分頁標籤。
清除您不想再與工作建立關聯的網路標記名稱。
按一下「Update」。
gcloud
如要從共用虛擬私有雲網路中移除作業,請執行下列指令:
gcloud run jobs update JOB_NAME --region=REGION \ --clear-network
如要只移除網路標記,但讓作業繼續連線至共用 VPC 網路,請執行下列指令:
gcloud run jobs update JOB_NAME --region=REGION \ --clear-network-tags
更改下列內容:
- JOB_NAME:Cloud Run 工作的名稱。
- REGION:Cloud Run 工作的區域。
YAML
如要從共用虛擬私有雲網路中移除作業,請按照下列步驟操作:
下載作業的 YAML 設定:
gcloud run jobs describe JOB_NAME --format export > job.yaml
從
job.yaml
檔案中移除下列內容:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
地點
- NETWORK:共用虛擬私有雲網路的完整資源名稱。
- SUBNET:子網路的完整資源名稱。
- 選用:NETWORK_TAG_NAMES:網路標記的名稱 (如果已將標記與職缺建立關聯)。
使用下列指令更新工作:
gcloud run jobs replace job.yaml
如要只移除網路標記,但讓工作繼續連線至共用 VPC 網路,請按照下列步驟操作:
下載作業的 YAML 設定:
gcloud run jobs describe JOB_NAME --format export > job.yaml
從
job.yaml
檔案中移除下列內容:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
地點
- NETWORK:共用虛擬私有雲網路的完整資源名稱。
- SUBNET:子網路的完整資源名稱。
- 選用:NETWORK_TAG_NAMES:網路標記的名稱 (如果已將標記與職缺建立關聯)。
使用下列指令更新工作:
gcloud run jobs replace job.yaml
疑難排解
無法刪除子網路
如要刪除子網路,請先刪除使用該子網路的所有資源。如果 Cloud Run 使用子網路,您必須將 Cloud Run 與共用虛擬私有雲網路中斷連線,或將其移至其他子網路,才能刪除子網路。
無法分離共用虛擬私有雲網路
如要卸離主專案中的共用虛擬私有雲網路,請按照取消佈建共用虛擬私有雲的步驟操作,並務必將所有 Cloud Run 服務或作業與共用虛擬私有雲網路中斷連線。
如要查看哪些 Cloud Run 資源使用共用 VPC 網路,請執行下列指令:
gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
將 HOST_PROJECT_ID 替換為共用虛擬私有雲主專案的 ID。
直接虛擬私有雲 egress 子網路的 IPv4 位址用盡
嘗試部署時發生下列錯誤:
Instance failed to start because of insufficient free IP addresses in the subnetwork SUBNET_ID when attempting to create an address in the subnetwork. Please consider moving to a subnetwork with more available IP addresses.
如果虛擬私有雲網路的子網路用盡 IPv4 位址,Cloud Logging 會記錄這項事件。發生這種情況時,Cloud Run 就無法再啟動任何服務執行個體或工作,直到有更多 IPv4 位址可用為止。
如要解決這個問題,請按照「IP 位址耗盡策略」操作。
查看分配的 IP 位址
如要查看 Cloud Run 已分配的 IP 位址,請前往 Google Cloud 控制台的「IP addresses」(IP 位址) 頁面,或從 Google Cloud CLI 執行下列指令:
gcloud compute addresses list