這份文件可協助您瀏覽 Google Kubernetes Engine (GKE) 說明文件,找出成本最佳化指南和建議。GKE 提供廣泛的自動調度資源和排程功能,可協助您在維持應用程式穩定性的同時,盡量降低叢集成本。
如需所有 GKE 最佳做法的整合總覽,請參閱「GKE 最佳做法」。您應該已熟悉下列項目:
總覽
導入 GKE 時,您必須考量不同的技術層面,以符合應用程式和業務需求。除了定義網路、安全性、儲存空間和其他技術層面,您也必須評估成本和效能,以滿足業務需求。您必須整合成本和效能,而非將兩者視為不同的實體,從基礎架構規劃的初始階段開始,定義統一的關係,決定可靠性和雲端支出。您會希望成本低廉且可靠性高,但隨著規模擴大,管理這項取捨的複雜度也會增加。
如要降低成本並確保應用程式穩定性,您可以設定或調整下列 GKE 功能:
- GKE 設定
- 工作負載設定
- 成本基準和可見度
使用 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 上部署容錯工作負載
與隨選 VM 執行個體相比,使用 Spot VM 執行無狀態、容錯或批次工作負載,最多可享 91% 的折扣。
詳情請參閱下列 GKE 說明文件:
對應高效率的機器系列和作業系統設定
使用具成本效益的執行個體設定檔 (例如 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 剖析) 整合至預先提交或提取要求檢查中,以便在不符規定的資訊清單送達叢集前稽核並封鎖。
詳情請參閱「依據持續整合管道中的公司政策檢查應用程式」。
基礎架構檢查清單
應用程式和工作負載最佳化
設定工作負載,有效運用資源並減少作業管理負擔。
指定相符的記憶體要求和限制
部署前,請指定精確的容器 CPU 和記憶體要求。如果是 CPU,請設定要求以符合服務等級目標 (SLO),但限制則不設上限。請確保要求的記憶體分配量與記憶體限制相符。
詳情請參閱 Kubernetes 說明文件中的「Resize CPU and Memory Resources assigned to Containers」(調整指派給容器的 CPU 和記憶體資源大小)。
縮短容器啟動時間
盡可能縮小容器映像檔,以縮短映像檔下載時間。
設定 PDB
為應用程式副本指定 PodDisruptionBudget (PDB) 物件,限制自願性中斷,並在 GKE 縮減規模或節點升級時確保穩定性。
詳情請參閱「為應用程式指定中斷預算」。
設定有意義的 readiness 和 liveness 探測
為所有容器設定完備性和有效性探測,確保 GKE 只將流量轉送至準備就緒的 Pod,並重新啟動失敗的執行個體,避免自動調整規模期間發生流量遺失。
詳情請參閱「設定執行中、就緒和啟動探測器」。
設定應用程式安全關機
請監聽 SIGTERM 信號、在結束前完成執行中的要求,或設定 preStop hook,為容器準備正常終止程序。
詳情請參閱「先佔 VM 的終止和正常關機」。
實作指數輪詢重試
在應用程式或服務網格層級實作指數輪詢重試,以處理暫時性故障或潛在的 Spot VM 搶占。
詳情請參閱 Istio 說明文件中的「重試」。
應用程式和工作負載最佳化檢查清單
成本基準和可見度
如要發揮最佳成本效益,您必須先掌握 GKE 支出和分配方式。這項功能可協助您將成本歸因於產生費用的團隊和業務單位。
下列 GKE 文件說明如何深入瞭解 GKE 帳單、資源消耗量和基準指標。
啟用 GKE 費用分配功能
啟用 GKE 費用分配功能,即可查看工作負載資源要求和相關費用。費用分配屬性會將叢集費用分配給工作負載的命名空間和 Kubernetes 標籤。
將這些詳細資料匯出至 BigQuery,即可在 Cloud Billing 中分析資料。您可以透過這項分析找出導致帳單高峰的工作負載、執行退款,以及最佳化資源要求。
詳情請參閱「取得 GKE 資源分配和叢集費用的主要支出深入分析」。
查看記錄和指標的擷取量
為叢集啟用 Cloud Logging 和 Cloud Monitoring 會產生費用。大量擷取記錄和自訂指標可能會導致意外費用。集中稽核擷取的記錄檔層級和自訂指標。
如要進一步瞭解如何排解記錄 API 使用量過高或記錄寫入逾時的問題,請參閱:
監控指標伺服器的健康狀態
監控指標伺服器部署作業的健康狀態,因為 GKE 內建的自動調度控制器會依據這項作業,擷取 CPU 和記憶體指標。
詳情請參閱「排解水平自動調度 Pod 資源功能問題」。
培養節省成本的文化
讓開發人員存取雲端支出資訊主頁,並提供 FinOps 訓練,確保架構決策符合業務成本預算。
如要進一步瞭解如何培養機構的成本效益文化,請參閱「推廣節省成本的文化」一文。
成本基準和可視性檢查清單
後續步驟
如要進一步瞭解成本效益所需的架構原則和組織文化,請參閱「在 GKE 上執行最具成本效益的 Kubernetes 應用程式的最佳做法」。