本頁概述設定 Cloud Run 資源網路選項的最佳做法。建議您先詳閱本頁面所有章節,瞭解 Cloud Run 支援的網路選項及其影響,再建立資源。
最佳做法:
監控 IP 位址使用情形。使用非 RFC 1918 IP 位址。
使用 IPv4 和 IPv6 (雙重堆疊) 子網路。
使用連線集區並重複使用連線。
更快的網際網路外部輸送量。
加快內部輸送量,提升 Google API 效能。
監控 IP 位址使用情況
如果您使用直接 VPC 輸出,請確認子網路有足夠的 IP 位址。您使用的 IP 位址數量取決於工作負載執行的執行個體數量,因此建議您監控 IP 位址用量。請確保一段時間內的 IP 使用量不會超出子網路支援的範圍。
如要估算 IP 位址用量,請按照下列步驟操作:
前往 Google Cloud 控制台的 Cloud Monitoring Metrics Explorer 頁面:
使用指標類型
run.googleapis.com/container/instance_count
查詢專案中的執行個體數量。您可以使用 Cloud Monitoring 查看這項指標的值隨時間的變化。將執行個體計數指標的值乘以 2,即可估算使用的 IP 位址數量。
IP 位址耗盡策略
使用 RFC 1918 私人 IP 位址空間搭配直接虛擬私有雲端輸出時,如果 Cloud Run 工作負載數量龐大,可能會導致 IP 位址耗盡。下列策略有助於使用替代 IP 位址範圍,管理 IP 位址耗盡問題。
使用非 RFC 1918 IPv4 位址
除了 RFC 1918 IPv4 位址範圍,Cloud Run 也支援 RFC 6598 和E 類/RFC 5735 範圍。所有Google Cloud 服務和功能都可搭配這些非 RFC 1918 範圍使用,包括虛擬私有雲網路、Cloud Load Balancing 和 Private Service Connect。
為獲得最佳相容性,建議您從 RFC 6598 (100.64.0.0/10) 範圍開始。如果您已在其他地方使用這個範圍,請考慮使用 E 類別/RFC 5735 (240.0.0.0/4)。E 類是個龐大的空間,可用的 IP 位址超過 2.68 億個,因此可長期支援您的成長。不過,Class E 有一些限制。舉例來說,Windows 和部分地端硬體不支援這項功能。請參閱這篇文章,瞭解如何運用 E 類 IPv4 位址空間,在 GKE 中解決 IPv4 位址耗盡問題。
使用 Cloud NAT 或 Private Service Connect
如果 Cloud Run 工作負載使用非 RFC 1918 範圍,但需要連線至僅接受 RFC 1918 的內部部署目的地,請使用下列其中一種解決方案:
- 使用混合式 NAT 執行位址轉譯和輸出作業,並使用小型 RFC 1918 範圍。
- 將地端服務公開為 Private Service Connect 混合式服務。
使用 IPv4 和 IPv6 (雙重堆疊) 子網路
雖然將應用程式移至 IPv6 無法減少 IPv4 位址耗盡的問題,但這是個好的第一步。設定雙堆疊資源,避免日後發生 IPv4 耗盡問題。
減少通訊埠耗盡的策略
以下章節說明如何運用 Cloud Run 策略,減少連接埠耗盡的情況。
使用連線集區並重複使用連線
如果向單一目的地 IP 位址傳送大量要求,請使用連線集區來維護及重複使用與目的地的連線。如果連線至單一 IP 位址的速率過高,可能會耗盡出埠,導致連線遭拒錯誤。
效能和輸送量策略
本節將介紹可擴充的選項,協助您提升網路效能和網際網路及 Google 服務的輸送量。
使用第二代執行環境
如要讓 Cloud Run 服務享有最佳網路效能,請在使用直接虛擬私有雲輸出流量轉送流量時,採用第二代執行環境。第二代環境提供更快的網路效能,尤其是在發生封包遺失時。
您可以使用 Google Cloud 控制台、gcloud CLI、YAML 或 Terraform 選取執行環境。
使用直接虛擬私有雲來處理輸出流量,加快網路輸出處理量
如要提高網路輸出連線的處理量,請使用直接虛擬私有雲輸出,透過虛擬私有雲網路轉送流量。如先前所述,建議您搭配第二代執行環境使用這項功能。
範例 1:網際網路的外部流量
如果要將外部流量傳送至公開網際網路,請設定 --vpc-egress=all-traffic
,透過虛擬私有雲網路傳送所有流量。採用這種做法時,您必須設定 Cloud NAT 才能連上公開網際網路。
如要讓 Cloud Run 使用 Cloud NAT 閘道進行 Public NAT 或 Private NAT,請參閱「Cloud NAT Direct VPC egress interactions」(Cloud NAT 直接虛擬私有雲輸出互動)。
範例 2:內部流量至 Google API
如果您使用直接 VPC 輸出功能將流量傳送至 Google API (例如 Cloud Storage),請選擇下列其中一個選項:
- 指定
private-ranges-only
(預設) 搭配私人 Google 存取權:- 設定
--vpc-egress=private-ranges-only
旗標。 - 啟用 Private Google Access。
- 設定私人 Google 存取權的 DNS。
請確認目標網域 (例如
storage.googleapis.com
) 對應至下列其中一個內部 IP 位址範圍:199.36.153.8/30
199.36.153.4/30
- 設定
- 指定
all-traffic
使用私人 Google 存取權:- 設定
--vpc-egress=all-traffic
旗標。 - 啟用 Private Google Access。
- 設定
使用 Cloud Run 的預設 MTU 設定
搭配 Cloud Run 使用虛擬私有雲網路時,請勿變更最大傳輸單位 (MTU) 設定。請改用預設的 1,460 位元組 MTU。