這份文件可協助您瀏覽 Google Kubernetes Engine (GKE) 說明文件,找出成本效益最佳化的指南和建議。GKE 提供廣泛的自動調整資源配置和排程功能,可協助您盡量降低叢集成本,同時維持應用程式穩定性。
如要查看所有 GKE 最佳做法的整合式總覽,請參閱「GKE 最佳做法」。您應已熟悉下列項目:
總覽
導入 GKE 時,您必須考量不同的技術層面,以符合應用程式和業務需求。除了定義網路、安全性、儲存空間和其他技術層面,您還必須評估成本和效能,以滿足業務需求。您必須在基礎架構規劃的初期階段,整合成本和效能,定義統一的關係,以決定可靠性和雲端支出,而不是將成本和效能視為不同的實體。您希望以低成本獲得高可靠性,但隨著規模擴大,管理這項取捨的複雜度也會增加。
如要降低成本並確保應用程式穩定,您可以設定或調整下列 GKE 功能:
- GKE 設定
- 工作負載設定
- 成本基準和可見度
您也可以使用 Compute Advisor (預先發布版),探索及實施成本最佳化最佳做法。詳情請參閱「使用 Compute Advisor」。
使用 GKE Autopilot
如果是小型沙箱或開發環境,請選取 Autopilot 叢集。在 Autopilot 模式下,GKE 會動態管理節點,您只需要為要求的 Pod 容量付費,有助於避免 VM、節點作業系統和系統負擔費用。
詳情請參閱 GKE Autopilot 總覽。
瞭解自動調度資源的運作方式
GKE 自動調度資源控制器會隨著流量要求變化,動態調整資源。
根據使用率指標新增及移除 Pod
HorizontalPodAutoscaler (HPA) 會根據 CPU 或自訂指標新增及移除 Pod。
如要瞭解及設定水平自動調度 Pod 資源功能,請參閱下列 GKE 說明文件:
設定目標使用率門檻 (例如 70% 或 80%),以維持緩衝區,在啟動額外副本 Pod 時處理流量暴增情況。
根據使用率指標調度 Pod
如果工作負載未採用水平自動調度 Pod 資源功能,或您不知道工作負載尖峰期,請使用 VerticalPodAutoscaler (VPA) 動態調整容器 CPU 和記憶體要求。
如要瞭解及設定垂直自動調度 Pod 資源功能,請參閱下列 GKE 說明文件:
在類似正式版的環境中,將 VPA 保持在 Off (僅限建議) 模式至少 24 小時 (最好是一週),以擷取代表性的流量模式。如要避免大小調整不穩定,請先在 VerticalPodAutoscaler 物件中明確指定最小和最大界限,再啟用 Initial 或 Auto 模式。
使用叢集自動配置器自動調整基礎架構規模
如要根據排程模擬結果 (而非指標負載) 調整基礎運算節點,請在 GKE Standard 節點集區中啟用叢集自動配置器。指定節點的最低參數,以支援夜間基本容量。
請務必為系統和應用程式 Pod 設定 PodDisruptionBudget (PDB) 物件。這項設定可確保叢集自動配置器在合併或縮減使用率偏低的節點集區時,不會不小心造成服務中斷。
如要瞭解及設定叢集自動調度器,請參閱下列 GKE 說明文件:
使用節點集區自動建立功能,部署動態節點集區
啟用節點集區自動建立功能,即可自動產生自訂 GKE 節點集區,其形狀、CPU 數量或記憶體限制會完全符合待處理 Pod 的排程參數。這項功能可盡量減少過大節點上剩餘的資源。
如要瞭解及設定節點集區自動建立功能,請參閱下列 GKE 說明文件:
自動調度資源檢查清單
基礎架構特性
根據成本最佳化優先順序,調整叢集硬體、位置和節點網路規則。
選取合適的機器類型
根據使用者位置和叢集需要存取的資料位置,為叢集選取合適的機型。
詳情請參閱機器家族資源與比較指南。
在 Spot VM 上部署容錯工作負載
使用 Spot VM 執行無狀態、容錯或批次工作負載,相較於隨選 VM 執行個體,最多可享 91% 的折扣。
詳情請參閱下列 GKE 說明文件:
對應高效能機器家族和 OS 系統設定
使用具成本效益的執行個體設定檔 (例如 E2 VM 架構),自訂節點集區機器設定。
如要進一步瞭解如何調整節點大小、設定 Spot VM 搶占時間,以及調整核心設定,請參閱「關於節點集區」。
選取適當的區域
如果延遲不會影響使用者,請在營運成本較低的 Compute Engine 區域執行叢集工作負載。
詳情請參閱「選擇 Compute Engine 區域的最佳做法」。
申請 CUD
購買承諾使用折扣 (CUD),即可在一年或三年期間,以大幅折扣價 (最多 70%) 使用基準運算資源。
詳情請參閱「依資源計算的承諾使用折扣」。
考量網路費用
區域性和多可用區 GKE 叢集可提高應用程式可靠性,但可能會產生內部跨可用區網路輸出費用。
如要盡量減少及控管網路費用,請考慮下列事項:
- 跨可用區資料移轉:雖然區域叢集會將工作負載分散到各個可用區,藉此提高可用性,但這些可用區之間移轉資料時,會產生相關費用。
詳情請參閱「所有網路定價」。
為非正式環境部署單一可用區叢集
在非正式環境中,為避免跨可用區網路費用並減少 VM 負擔,請部署單一可用區叢集,而非區域或多可用區叢集。
詳情請參閱「關於叢集設定選項」。
最佳化叢集 DNS 解析路徑和輸入流量
如要最佳化叢集 DNS 解析和輸入流量,可以部署 NodeLocal DNSCache 和網路端點群組 (NEG)。
執行 DNS 密集型工作負載時,NodeLocal DNSCache 會在每個節點上執行本機 DNS 精靈。這項設定可防止高查詢負載耗盡 CoreDNS 資源,避免擴充 CoreDNS,並降低整體 GKE 成本。
對於輸入流量,透過 NEG 進行容器原生負載平衡時,流量會直接傳送至 Pod IP 位址,而非執行個體群組。這種直接轉送方式有助於在 Pod 擴充期間,順利重新導向流量。
如需詳細資訊,請參閱:
為每個命名空間套用資源配額
在多租戶叢集中,為每個命名空間部署標準 Kubernetes ResourceQuota 物件,鎖定 CPU 和記憶體形狀的閾值,防止個別團隊排定不符規定的工作負載,導致產生非預期的運算費用。
詳情請參閱 Kubernetes 說明文件中的「命名空間」。
導入 Policy Controller 稽核
部署 Policy Controller,動態稽核及強制執行叢集是否符合公司標準。Policy Controller 會使用許可控制功能,拒絕設定錯誤的資源。
如要瞭解詳情,請參考下列資源:
在 CI/CD 管道中,禁止使用不符規定的資訊清單
在開發生命週期的早期階段,驗證是否符合費用政策。
將驗證指令碼 (例如 kpt 剖析) 整合至預先提交或提取要求檢查,以便在不符規定的資訊清單送達叢集前稽核並封鎖。
詳情請參閱「在 CI 管道中依據公司政策驗證應用程式」。
基礎架構檢查清單
應用程式和工作負載最佳化
設定工作負載,有效運用資源並減少作業管理負擔。
指定相符的記憶體要求和限制
部署前,請先指定精確的容器 CPU 和記憶體要求。如果是 CPU,請設定要求來達成服務水準目標 (SLO),但不要限制用量。記憶體方面,請確保要求的分配量符合記憶體限制。
詳情請參閱 Kubernetes 說明文件中的「Resize CPU and Memory Resources assigned to Containers」。
加快容器啟動速度
盡可能縮小容器映像檔,縮短映像檔下載時間。
設定 PDB
為應用程式副本指定 PodDisruptionBudget (PDB) 物件,限制自願中斷,並在 GKE 縮減資源或節點升級時確保穩定性。
詳情請參閱「為應用程式指定中斷預算」。
設定有意義的 readiness 和 liveness 探測
為所有容器設定完備性和有效性探測,確保 GKE 只將流量轉送至準備就緒的 Pod,並重新啟動失敗的執行個體,避免自動調整規模期間發生流量遺失。
詳情請參閱「設定即時、就緒和啟動探針」。
設定應用程式正常關機
監聽 SIGTERM 信號、在退出前完成處理中的要求,或設定 preStop 鉤子,讓容器做好準備,以便正常終止。
詳情請參閱「先占 VM 的終止和正常關機」。
以指數輪詢方式實作重試
在應用程式或服務網格層級實作指數輪詢重試,以處理暫時性故障或潛在的 Spot VM 先占問題。
詳情請參閱 Istio 說明文件中的「重試」。
應用程式和工作負載最佳化檢查清單
成本基準和可見度
如要盡可能提高成本效益,首先必須瞭解 GKE 支出和分配方式。這項功能可協助您將費用歸因至產生費用的團隊和業務單位。
下列 GKE 說明文件說明如何深入瞭解 GKE 計費、資源消耗和基準指標。
啟用 GKE 費用分配功能
啟用 GKE 費用分配功能,即可查看工作負載資源要求和相關費用。費用分配屬性會將叢集費用分配給工作負載的命名空間和 Kubernetes 標籤。
將這些詳細資料匯出至 BigQuery,即可在 Cloud Billing 中分析資料。您可以根據這項分析找出導致帳單費用飆升的工作負載、執行費用退還,以及最佳化資源要求。
詳情請參閱「取得 GKE 資源分配和叢集費用的重要支出深入分析」。
查看記錄和指標的擷取量
為叢集啟用 Cloud Logging 和 Cloud Monitoring 會產生費用。大量擷取記錄和自訂指標可能會導致意外費用。集中稽核擷取的記錄檔層級和自訂指標。
如要進一步瞭解如何排解 Logging API 用量過高或記錄寫入限制逾時的問題,請參閱:
監控指標伺服器的健康狀態
監控指標伺服器部署作業的健康狀態,因為 GKE 內建的自動調度資源控制器會依據這項資訊,擷取 CPU 和記憶體指標。
詳情請參閱「排解水平自動調度 Pod 資源問題」。
培養節約成本的文化
讓開發人員存取雲端支出資訊主頁,並提供 FinOps 訓練,確保架構決策符合業務成本預算。
如要進一步瞭解組織的成本效益文化,請參閱「推廣節省成本的文化」。
成本基準和可視性檢查清單
使用 Compute Advisor
Compute Advisor 是Google Cloud 控制台中的 AI 輔助介面,採用 Gemini 技術,可協助您為 GKE 設計具備韌性且符合成本效益的架構。
Compute Advisor 會在部署前驗證貴機構的政策和資源配額,並提供彈性啟動型 VM 和 Spot VM 的近乎即時可用性指引。如果工作負載需要隨選資源,Compute Advisor 就不會提供可用性指引。
如要在 Google Cloud 控制台中存取 Gemini,請完成下列步驟:
-
前往 Google Cloud 控制台的「Overview」(總覽) 頁面。
-
在「運用 Compute Advisor 設計基礎架構」部分,提交提示。Gemini 開始生成回覆。
-
如要生成架構建議,請在 Compute Advisor 執行下列其中一個範例提示。按一下「在 Compute Advisor 中執行提示」按鈕時, Google Cloud 控制台可能需要超過 15 秒才能載入:
自動調度資源和裝箱:
用途:盡可能提高分裝成效,並將閒置 CPU 負擔降至最低,請使用這個提示設定 GKE 叢集自動調度資源和節點集區的策略。
Configure a GKE cluster to use autoscaler and node pool strategy to maximize bin packing and minimize idle CPU overhead.多租戶管理:
用途:為確保開發命名空間在預算範圍內,請使用這個提示為多租戶 GKE 叢集草擬 ResourceQuota 政策。
Draft a ResourceQuota policy for a multi-tenant GKE cluster to keep development namespaces within budget bounds.工作負載最佳化:
應用情境:協助您決定資源需求經常變動的批次工作負載,應使用 GKE Autopilot 還是標準模式。請使用下列提示取得建議:
Recommend whether to use GKE Autopilot or Standard mode for a batch processing workload with highly variable resource demands.
後續步驟
如要進一步瞭解成本效益所需的架構原則和組織文化,請參閱「在 GKE 上執行最具成本效益的 Kubernetes 應用程式的最佳做法」。