Autopilot 是 Google Kubernetes Engine (GKE) 的代管作業模式。本頁面說明 Autopilot 模式的優點,並提供規劃叢集、部署工作負載,以及設定網路和安全性的相關資訊。管理員、架構師和操作人員可以運用這項資訊,評估 GKE Autopilot 模式是否符合容器化工作負載的作業需求,進而做出明智決策。
如要進一步瞭解 GKE 作業模式之間的差異,請參閱「比較 GKE Autopilot 和 Standard」。
什麼是 Autopilot?
GKE Autopilot 是 GKE 的一種作業模式,由 Google 管理基礎架構設定,包括節點、資源調度、安全性及其他預設設定。Autopilot 模式經過最佳化,可執行大部分的正式環境工作負載,並根據您的 Kubernetes 資訊清單佈建運算資源。
您可以在 Autopilot 模式下執行整個叢集,讓叢集及其所有工作負載遵循 GKE 最佳做法和建議,進行擴充、安全性、升級和節點設定。您也可以在 GKE Standard 叢集中,以 Autopilot 模式執行特定工作負載。如果環境仍需手動控管基礎架構,可以選用這個選項。詳情請參閱「關於 GKE Standard 中的 Autopilot 模式工作負載」。
優點
- 專注於應用程式:Google 會管理基礎架構,讓您專心建構及部署應用程式。
- 安全性:Autopilot 叢集預設採用強化設定,並預設啟用多項安全性設定。GKE 會在安全性修補程式推出時,自動套用至節點,並遵循您設定的維護排程。
- 定價:Autopilot 定價模式可簡化帳單預測和歸因。
- 節點管理:Google 會管理 worker 節點,因此您不必建立新節點來容納工作負載,也不必設定自動升級和修復功能。
- 資源調度:當工作負載負擔過重,而您新增更多 Pod 來因應流量時 (例如使用 Kubernetes 水平 Pod 自動調度資源),GKE 會自動為這些 Pod 佈建新節點,並視需要自動擴充現有節點中的資源。
- 排程:Autopilot 會為您管理 Pod 裝箱,因此您不必考慮每個節點上執行的 Pod 數量。您可以使用 Kubernetes 機制 (例如親和性和 Pod 散布拓撲),進一步控管 Pod 放置位置。
- 資源管理:如果您部署工作負載時未設定 CPU 和記憶體等資源值,Autopilot 會自動設定預先設定的預設值,並在工作負載層級修改資源要求。
- 網路:Autopilot 預設會啟用部分網路安全防護功能,例如透過虛擬私有雲防火牆規則傳遞所有 Pod 網路流量,即使流量要傳送至叢集中的其他 Pod 也一樣。
- 版本管理:所有 Autopilot 叢集都會註冊至 GKE 發布管道,因此控制層和節點會在該管道中最新的合格版本上執行。
- 代管彈性:如果工作負載有特定的硬體或資源需求 (例如 GPU),您可以在 ComputeClasses 中定義這些需求。在工作負載中要求 ComputeClass 時,GKE 會根據您的需求,為 Pod 設定節點。您不必手動設定節點或個別工作負載的硬體。
- 降低作業複雜度:Autopilot 可免除持續監控節點、調度資源和排程作業的需求,進而降低平台管理負擔。
Autopilot 隨附服務水準協議,涵蓋控制層和 Pod 使用的運算容量。
關於 Autopilot 容器最佳化運算平台
在 GKE 1.32.3-gke.1927002 以上版本中,Autopilot 包含專為工作負載設計的容器最佳化運算平台。這個平台適合大多數不需要特定硬體的一般用途工作負載,例如網路伺服器和中等強度的批次工作。
容器最佳化運算平台使用 GKE Autopilot 節點,可在執行時動態調整大小,並能從 CPU 的一小部分向上擴充,盡可能減少中斷。這項動態調整大小功能可大幅縮短工作負載擴充時,佈建新容量所需的時間。為提高調整資源配置和調整大小的速度,GKE 也會維護預先佈建的運算容量集區,可因應資源需求增加,自動化分配給工作負載。由於基礎機器系列並非固定,因此每個 CPU 的效能會因 GKE 排定 Pod 的機器系列而異。
容器最佳化運算平台具備下列優點:
- 運算能力符合工作負載:Autopilot 會根據 Pod 數量和資源消耗量等因素,動態調整容器最佳化運算平台的運算能力。因此,叢集中的運算能力會符合工作負載的需求。
- 快速擴充時間:在擴充事件期間,GKE 可動態調整現有節點的大小,以容納更多 Pod 或增加資源消耗量。這種動態容量佈建方式,通常代表新的 Pod 不必等待新節點啟動。Arm 工作負載不支援調整節點大小。
- 多架構支援:容器最佳化運算平台支援 x86 和 Arm 架構,可處理一般用途工作負載。工作負載預設會使用 x86 架構。如要在一般用途 Arm 平台執行工作負載,請指定
kubernetes.io/arch: arm64節點選取器,或選取autopilot-arm或autopilot-arm-spotComputeClass。
您可以透過下列方式,使用 Autopilot 容器最佳化運算平台:
- Autopilot 叢集:未選取特定硬體的 Pod 預設會使用這個運算平台。
- Standard 叢集:
- 內建 Autopilot ComputeClass。
podFamily自訂 Autopilot ComputeClass 中的優先順序規則。
定價
Autopilot 定價會根據 Pod 使用的硬體類型,採用不同的模式,如下所示:
一般用途 Autopilot Pod:下列類型的 Pod 採用以 Pod 為基礎的計費模式,並歸類為一般用途 Pod:
- 在 Autopilot 叢集或 Standard 叢集的容器最佳化運算平台上執行的 Pod。
- 在 Autopilot 叢集中選取
Balanced或Scale-Out內建 ComputeClass 的 Pod。
詳情請參閱 Google Kubernetes Engine 定價中的「一般用途 Autopilot 工作負載」一節。
選取特定硬體的 Autopilot 工作負載:選取特定硬體 (例如 Compute Engine 機器系列、硬體加速器,或使用 ComputeClasses) 的 Pod 會採用以節點為基礎的計費模式。在這個模式中,您需要支付基礎硬體費用和節點管理溢價。
詳情請參閱「Google Kubernetes Engine 定價」中的「選取特定硬體的 Autopilot 工作負載」一節。
Autopilot 叢集和工作負載
GKE 可讓您在整個叢集或 Standard 叢集中的特定工作負載使用 Autopilot 模式。Autopilot 叢集是使用 GKE 的建議方式,因為整個叢集預設會採用 Google 的最佳做法。
不過,部分組織需要手動控制或彈性,因此需要使用 GKE Standard 叢集。在這種情況下,您仍可在 Standard 叢集中使用 Autopilot 執行特定工作負載,在工作負載層級享有 Autopilot 的多項功能。
以下各節將說明如何規劃及建立 Autopilot 叢集。如果您有 Standard 叢集,且想在 Autopilot 模式下執行部分工作負載,請參閱「關於 GKE Standard 中的 Autopilot 模式工作負載」。
規劃 Autopilot 叢集
建立叢集前,請先規劃及設計 Cloud de Confiance 架構。在 Autopilot 中,您可以在工作負載規格中要求硬體。GKE 會佈建及管理相應的基礎架構,以執行這些工作負載。舉例來說,如果您執行機器學習工作負載,則會要求硬體加速器。
請根據工作負載規模,規劃並要求 Cloud de Confiance 專案或組織的配額。專案必須有足夠的硬體配額,GKE 才能為工作負載佈建基礎架構。
規劃時請考量下列因素:
- 預估叢集大小和規模
- 工作負載類型
- 儀表板版面配置和使用方式
- 網路配置和設定
- 安全性設定
- 叢集管理與維護
- 工作負載部署和管理
- 記錄和監控
下列各節提供相關資訊和實用資源,協助您考量這些因素。
網路
建立具有公開網路的 Autopilot 叢集時,叢集中的工作負載可以彼此通訊,也可以與網際網路通訊。這是預設的網路模式。 Cloud de Confiance 和 Kubernetes 提供多種額外的網路功能,您可以根據需求使用,例如具備私人網路的叢集。
Kubernetes 和雲端中的網路相當複雜。在開始變更Cloud de Confiance 為您設定的預設值之前,請務必熟悉網路的基本概念。下表提供資源,可協助您根據用途進一步瞭解 GKE 網路:
| 用途 | 資源 |
|---|---|
| 瞭解 Kubernetes 和 GKE 的網路運作方式 |
瞭解網路模型後,請考量貴組織的網路和網路安全需求。選擇符合這些條件的 GKE 和 Cloud de Confiance 網路功能。 |
| 規劃 GKE 網路設定 | 建議您瞭解 GKE 的網路配額,例如每項服務的端點數量和 API 要求限制。下列資源可協助您規劃網路設定的特定部分:
|
| 公開工作負載 |
|
| 在多個叢集中執行高可用性的連結服務 | 使用多叢集服務 (MCS)。 |
| 平衡傳入流量的負載 |
|
| 設定叢集網路安全 | |
| 觀察 Kubernetes 網路流量 | 根據預設,Autopilot 會使用 GKE Dataplane V2 收集指標和觀測資料。
|
資源調度
如要有效大規模運作平台,必須審慎規劃和考量。您必須考量設計的擴充性,也就是叢集在擴充時,仍能維持在服務水準目標 (SLO) 內的能力。如需平台管理員和開發人員的詳細指南,請參閱「建立可擴充叢集的指南」。
您也應考量 GKE 配額和限制,尤其是打算執行可能包含數千個 Pod 的大型叢集時。
在 Autopilot 模式中,GKE 會根據叢集中的 Pod 數量,自動調整節點資源。如果叢集沒有執行中的工作負載,Autopilot 可以自動將叢集縮減至零個節點。叢集縮減後,叢集中不會留下任何節點,系統 Pod 也會處於無法排程的狀態。請放心,這是正常情況。在多數新建立的 Autopilot 叢集中,您可能會發現,部署的第一個工作負載需要較多時間排程。這是因為新的 Autopilot 叢集在建立時,一開始沒有可用的節點,會等到您部署工作負載後,才會佈建其他節點。
如要自動調度叢集中的 Pod 數量,請使用 Kubernetes 水平 Pod 自動調度資源等機制,根據內建的 CPU 和記憶體指標,或 Cloud Monitoring 的自訂指標調度 Pod 資源。此外,Autopilot 預設會啟用垂直自動調度 Pod 資源功能。如要在自動調整資源配置副本時,最佳化容器 CPU 要求,可以使用搭配 VPA 的 HPA 適當調整大小 (預先發布版)。如要瞭解如何根據各種指標設定水平調度資源,請參閱「設定水平自動調度 Pod 資源」。
安全性
Autopilot 叢集預設會啟用並套用安全性最佳做法和設定,包括「強化叢集安全性」和「GKE 安全性總覽」中的多項建議。
如果您在 Standard 叢集中執行 Autopilot 工作負載,GKE 會盡可能對這些工作負載套用各種 Autopilot 安全防護措施。您可以在整個 Standard 叢集中嚴格執行特定 Autopilot 安全性政策。如果強制執行所有可用的 Autopilot 政策,Standard 叢集的作業環境就會與 Autopilot 叢集類似。
如要進一步瞭解 Autopilot 強化措施,以及如何實施特定安全性需求,請參閱「Autopilot 的安全措施」。
建立叢集
規劃環境並瞭解需求後,請建立 Autopilot 叢集。新的 Autopilot 叢集是區域叢集,具有可公開存取的 IP 位址。每個叢集都已套用基準強化措施,並具備自動調度資源和其他功能。如需預先設定功能的完整清單,請參閱「比較 GKE Autopilot 和 Standard」。
如要建立無法存取外部 IP 位址的叢集,請設定網路隔離。
在 Autopilot 模式中部署工作負載
您可以在 Autopilot 模式下執行相容的 Kubernetes 工作負載,讓 GKE 管理資源調度、有效率的排程和底層基礎架構。您可以使用容器最佳化運算平台處理一般用途工作負載,也可以使用 ComputeClass 為工作負載選取特定硬體。
您可以透過下列任一方式執行這些 Autopilot 工作負載:
- 將工作負載部署至 Autopilot 叢集。
- 將工作負載部署至 Standard 叢集時,選取 Autopilot ComputeClass。
如要在 Cloud de Confiance 控制台中,查看在 Autopilot 叢集部署及公開應用程式的互動式指南,請按一下「Guide me」(逐步引導):
下表列出一些常見需求,並提供建議做法:
| 用途 | 資源 |
|---|---|
| 在調度叢集資源時控管個別節點屬性 | 建立自訂 ComputeClass,並在工作負載資訊清單中要求。詳情請參閱「關於自訂 ComputeClass」。 |
| 在 Standard 叢集中執行 Autopilot 工作負載 | 在 Standard 叢集使用 Autopilot ComputeClass。詳情請參閱「關於 GKE Standard 中的 Autopilot 模式工作負載」。 |
| 執行 Arm 工作負載 | 如要執行一般用途工作負載,請要求 Arm 架構和 autopilot-arm 或 autopilot-arm-spot 內建 ComputeClass。如需特定硬體,請在自訂 ComputeClass 中要求搭載 Arm CPU 的機器系列。詳情請參閱「關於自訂 ComputeClass」。 |
| 執行加速 AI/機器學習工作負載 | 在 ComputeClass 或工作負載資訊清單中要求 GPU。如要進一步瞭解如何在工作負載資訊清單中要求 GPU,請參閱「在 Autopilot 中部署 GPU 工作負載」。 |
| 以較低成本執行容錯工作負載,例如批次工作。 |
Spot Pod 可搭配任何 ComputeClass 或硬體設定使用。 |
| 執行需要盡可能減少中斷的工作負載,例如遊戲伺服器或工作佇列 | 僅限 Autopilot 叢集:在 Pod 規格中指定 cluster-autoscaler.kubernetes.io/safe-to-evict=false 註解。Pod 最多可有七天不會因節點自動升級或縮減事件而遭到淘汰。詳情請參閱「延長 Autopilot Pod 的執行時間」。 |
| 如果節點上的 Pod 資源要求總和中,有可用且未使用的資源,則允許工作負載超出要求。 | 將資源 limits 設為高於 requests,或不設定資源限制。詳情請參閱「在 GKE 中設定 Pod 爆發」。 |
Autopilot 可讓您為工作負載要求 CPU、記憶體和臨時儲存空間資源。允許的範圍取決於您要在 Autopilot 容器最佳化運算平台,還是特定硬體上執行 Pod。如要瞭解預設容器資源要求和允許的資源範圍,請參閱「Autopilot 中的資源要求」。
工作負載區隔
Autopilot 叢集支援使用節點選取器和節點親和性,設定工作負載區隔。如要指示 GKE 將工作負載放在符合特定條件 (例如自訂節點標籤) 的節點上,工作負載區隔功能就非常實用。舉例來說,您可以指示 GKE 在具有 game-server 標籤的節點上排定遊戲伺服器 Pod,並避免在這些節點上排定任何其他 Pod。
詳情請參閱「在 GKE 中設定工作負載區隔」。
使用可用區拓撲在特定可用區排定 Pod
如需將 Pod 放在特定 Cloud de Confiance 可用區 (例如存取可用區 Compute Engine 永久磁碟上的資訊),請參閱「將 GKE Pod 放在特定可用區」。
Pod 親和性和反親和性
使用 Pod 相依性和反相依性,將 Pod 集中在單一節點上,或讓某些 Pod 避開其他 Pod。Pod 親和性和反親和性會指示 Kubernetes 根據特定拓撲網域 (例如特定區域或可用區) 中節點上執行的 Pod 標籤,做出排程決策。舉例來說,您可以指示 GKE 避免將前端 Pod 與其他前端 Pod 排定在相同節點上,以便在發生服務中斷時提高可用性。
如需操作說明和詳細資訊,請參閱「Pod 親和性和反親和性」。
在 GKE 中,您可以將 Pod 親和性和反親和性與 topologyKey 中的下列標籤搭配使用:
topology.kubernetes.io/zonekubernetes.io/hostname
Pod 拓撲分布限制
如要在 Kubernetes 擴充或縮減 Pod 數量時,提高工作負載的可用性,您可以設定 Pod 拓撲分散限制。這項設定可控制 Kubernetes 如何將 Pod 分散到拓撲網域 (例如區域) 內的節點。舉例來說,您可以指示 Kubernetes 在 us-central1 區域的三個 Cloud de Confiance 可用區中,各放置特定數量的遊戲伺服器工作階段 Pod。
如需範例、詳細資料和操作說明,請參閱 Pod 拓撲分散限制。
如果您搭配叢集自動調度資源功能使用 topologySpreadConstraints,建議您設定 nodeTaintsPolicy: Honor。這項設定可確保叢集自動配置器在縮減資源時,正確模擬 Pod 遷移作業,避免可能發生的資源調度迴圈。如果沒有這項設定,自動配置器可能會以違反拓撲分布限制的方式縮減節點,導致立即擴充事件和工作負載中斷。
whenUnsatisfiable: ScheduleAnyway 設定也有助於防止 Pod 在拓撲暫時不平衡時 (例如可用區故障期間) 變成無法排程。
管理及監控 Autopilot 叢集
在 Autopilot 模式下,GKE 會自動管理叢集升級作業,以及控制層和 worker 節點的維護作業。Autopilot 叢集也內建功能,可讓您監控叢集和工作負載。
GKE 版本升級
所有 Autopilot 叢集都會註冊 GKE 發布管道。在發布管道中,GKE 會管理叢集的 Kubernetes 版本,並根據管道在功能可用性和版本穩定性之間取得平衡。根據預設,Autopilot 叢集會註冊至標準發布管道,但您可以依據穩定性和功能需求,選取其他管道。如要進一步瞭解發布管道,請參閱「關於發布管道」。
GKE 會自動開始升級、監控進度,並在發生問題時暫停作業。您可以透過下列方式手動控制升級程序:
- 如要控管 GKE 可以執行自動升級的時間,請建立維護期間。舉例來說,您可以將維護期間設在多人遊戲每週重設的前一晚,這樣玩家就能在重設時登入,不會受到干擾。
- 如要控管 GKE 在特定日期範圍內「不得」啟動自動升級的時間,請使用維護作業排除時段。舉例來說,您可以在黑色星期五和網購星期一特價活動期間設定維護排除項目,讓客戶順利購物。
- 如要在自動升級開始前取得新版本,請手動升級控制層。GKE 會逐步協調節點版本與控制層版本。
- 如要取得僅適用於較新發布管道的修補程式版本,請參閱「從較新管道執行修補程式版本」。舉例來說,您可能需要特定修補程式版本,才能緩解最近揭露的安全漏洞。
監控 Autopilot 叢集
Autopilot 叢集已啟用 Cloud Logging、Cloud Monitoring 和 Google Cloud Managed Service for Prometheus。
Autopilot 叢集會自動收集下列類型的記錄和指標,並遵循 Google 的遙測收集最佳做法:
Cloud Logging 的記錄
- 系統記錄
- 工作負載記錄
- 管理員活動稽核記錄
- 資料存取稽核記錄
Cloud Monitoring 指標
- 系統指標
- 工作負載指標 (來自 Google Cloud Managed Service for Prometheus)
無須額外設定,即可啟用記錄和監控功能。下表說明如何根據需求與收集到的遙測資料互動:
| 用途 | 資源 |
|---|---|
| 瞭解及存取 GKE 記錄 |
|
| 觀察 GKE 叢集的效能 | 有效監控叢集效能,有助於盡可能提高叢集和工作負載的營運成本效益。 |
| 監控叢集的資安態勢 | 使用資安態勢資訊主頁,根據 GKE 最佳做法稽核執行中的工作負載、掃描容器作業系統和語言套件中的安全漏洞,並取得可行的緩解建議。詳情請參閱「資安態勢資訊主頁簡介」。 |
疑難排解
如需疑難排解步驟,請參閱「排解 Autopilot 叢集問題」。
後續步驟
- 瞭解如何比較 Autopilot 和 Standard 叢集的功能。
- 建立 Autopilot 叢集。
- 進一步瞭解 Autopilot 資源要求。
- 瞭解如何建立可用區叢集。
- 閱讀 Autopilot 運算級別總覽。