容器執行個體自動調度資源

在 Knative serving 中,每個修訂版本都會自動調整所需容器執行個體數量,以處理所有傳入要求。如果修訂版本未收到任何流量,系統預設會將容器執行個體數量調度為零。不過,如有需要,您可以變更這項預設設定,使用「最少執行個體」設定指定要保持閒置或「暖機」狀態的執行個體。

排定的執行個體數量會受到下列因素影響:

在某些情況下,您可能會基於成本控管考量,或為了與服務使用的其他資源更相容,而想限制可啟動的容器執行個體總數。舉例來說,Knative 服務可能與資料庫互動,而該資料庫只能處理特定數量的並行開放連線。

容器執行個體數量上限簡介

如要限制可並行啟動的執行個體總數,請使用容器執行個體數量上限設定,詳情請參閱「設定容器執行個體數量上限」。

超過執行個體數量上限

在正常情況下,修訂版本會建立新的執行個體進行擴充,以處理外來流量負載。不過,如果您設定了執行個體數量上限,在某些情況下,執行個體數量可能不足以因應流量負載。在這種情況下,外來要求佇列最長為 60 秒。在此 60 秒期間,如果執行個體完成處理要求,就可用於處理佇列要求。如果 60 秒期間沒有執行個體可用,要求就會失敗,並在 Cloud Run 上顯示 429 錯誤代碼。

資源調度保證

上限執行個體限制是一種上限。設定高限制並不代表修訂版本能夠擴充至指定的容器執行個體數量。只代表容器執行個體在不超過限制的情況下,在任何時間點能夠共存的數量。

流量尖峰

在部分情況下 (例如流量迅速增加),Knative 服務可能會在短暫期間內,建立略於指定上限執行個體值的容器執行個體。如果您的服務無法承受這樣的臨時行為,可以考慮採用安全餘裕,設定較低的上限執行個體值。

部署作業

部署新修訂版本時,Knative 服務會逐漸將流量從舊修訂版本遷移至新修訂版本。由於上限執行個體限制是針對各個修訂版本設定,您在部署後可能會暫時超過指定限制。

閒置執行個體及盡可能減少冷啟動

只有在執行個體處理要求時,才會耗用 Kubernetes 資源,但這不代表 Knative Serving 會在執行個體處理完所有要求後立即關閉。為盡量降低冷啟動的影響,Knative 服務可能會讓部分執行個體保持閒置狀態。這類執行個體可在流量突然激增時處理要求。

舉例來說,容器執行個體完成處理要求後,可能會維持閒置狀態一段時間,以免需要處理其他要求。閒置容器執行個體可能會持續佔用資源,例如開放資料庫連線。不過,Cloud Run 的CPU 不會提供

如要永久保留閒置執行個體,請使用 min-instance 設定。

後續步驟