您可以透過 Google Kubernetes Engine (GKE),取得叢集最佳化方面的指導。
GKE 會監控叢集,如果發現可進行最佳化,就會透過 Recommender (這項 Google Cloud 服務會產生在 Google Cloud上使用資源的深入分析和建議) 提供指引。對於 GKE,建議引擎會提供兩種類型的資訊:
- 洞察說明 GKE 偵測到叢集用量可透過某種方式進行最佳化。
- 建議會說明如何最佳化叢集用量。
GKE 會在 Google Cloud 控制台中提供這項資訊,您也可以使用 Google Cloud CLI 和 Recommender API 找到這項資訊。GKE 提供的主題建議包括:
- 淘汰項目: 減少使用已淘汰的 Kubernetes 功能或 API。
- 作業和連線:修正與控制層和節點連線,以及 IP 位址使用率相關的問題。
- 成本最佳化: 實作具備最佳成本效益的設定和做法。舉例來說,您可以找出閒置的 GKE 叢集,或是資源過度佈建的 GKE 叢集。
- 擴充性:導入可靠性提升做法,例如擴充資源不足的 GKE 叢集。
- 資源要求和限制: 設定資源要求和限制,避免節點資源壓力導致 Pod 突然終止,並提高費用分配準確率。
- Agones: 在叢集中隔離 Agones 控制器。
- 中斷: 確保工作負載在維護期間持續運作並可復原。
- Webhook:使用 Webhook 時,請確保控制層穩定性。
- 資料保護: 確保工作負載不會受到中斷事件影響。
- 叢集憑證: 輪替叢集憑證,避免服務中斷。
- 發布版本: 在發布版本中註冊叢集。
- 維護期間: 選擇 GKE 叢集維護作業的定期時間範圍。
- 支援的版本:請確認叢集執行的版本符合支援條件,且遵守 GKE 版本差異政策。詳情請參閱參考頁面中的「支援期結束時自動升級」和「GKE 版本偏差政策」一節。
- 節點服務帳戶權限: 請確保節點服務帳戶具備正常 GKE 作業所需的重要權限。
- CRD:修正設定有誤的 CRD,並使用有效的 CA 組合,確保叢集作業穩定運作。
- etcd 使用量: 請確保 etcd 資料庫有足夠的儲存空間,避免叢集不穩定。
事前準備
開始之前,請確認你已完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update
,取得最新版本。
必要的角色
請確認您已具備 Kubernetes 洞察和建議的必要權限,可透過下列基本角色或預先定義的角色取得:
如要查看洞察資料和最佳化建議,請具備下列任一角色:
查看及更新洞察和最佳化建議的狀態 (例如關閉最佳化建議):
查看洞察資料和建議
您可以使用 Google Cloud CLI、Google Cloud 控制台或 Recommender API 查看深入分析和建議。
控制台
在控制台中查看建議時,有兩個選項。您可以使用檢視畫面頂端的高階評量表,查看專案中所有叢集的健康狀態、升級和成本最佳化建議的匯總結果。
您也可以查看每個叢集的建議清單。
如要使用評分表查看建議,請按照下列步驟操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面:
如要查看個別最佳化建議影響的叢集數量,請按一下要查看類別 (健康狀態、升級或費用) 下方的「查看最佳化建議」。在顯示的側欄面板中,建議清單會指出各項建議影響的叢集數量。
如要查看更多資訊,包括受影響的叢集名稱,請按一下建議名稱。
如要查看每個受影響叢集的詳細資料,請再次點選建議。
如要查看各叢集的建議,請按照下列步驟操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面:
查看特定叢集的「通知」欄,瞭解洞察資料和建議。
如要查看更多資訊,請按一下洞察資料。在顯示的側邊面板中,您可以查看這項洞察資料的詳細資訊,包括任何相關聯的建議。
gcloud
深入分析通常會對應到建議。洞察資料會透過 gcloud recommender insights
擷取,最佳化建議則會透過 gcloud recommender recommendations
擷取。
查看特定可用區 (適用於區域叢集) 或特定地區 (適用於地區叢集) 的叢集洞察資料清單:
gcloud recommender insights list \ --insight-type=google.container.DiagnosisInsight \ --location=LOCATION \ --project=PROJECT_ID \ --format=FORMAT \ --filter="insightSubtype:SUBTYPE"
更改下列內容:
PROJECT_ID
:叢集所在專案的 Google Cloud 專案 ID。LOCATION
:叢集的確切區域或可用區。 如果是可用區叢集,您必須提供確切的可用區 (例如us-central1-c
)。如果是區域叢集,您必須提供確切的區域 (例如us-central1
)。FORMAT
:將輸出格式變更為 YAML。 這個旗標是選用的。SUBTYPE
:洞察子類型,例如DEPRECATION_K8S_1_23_CERTIFICATE
。這會將輸出內容限制為指定子類型的洞察資料。這個旗標是選用的。
或者,如果您已有洞察 ID,可以執行下列指令,查看洞察的詳細資料:
gcloud recommender insights describe INSIGHT \ --insight-type=google.container.DiagnosisInsight \ --location=LOCATION \ --project=PROJECT_ID \ --format=FORMAT
將
INSIGHT
替換為洞察 ID 值,該值位於洞察的name
欄位網址結尾。輸出內容會列出 GKE 在叢集中偵測到的行為,以及其他詳細資料。
查看特定可用區 (適用於區域叢集) 或特定區域 (適用於地區叢集) 叢集的建議清單:
gcloud recommender recommendations list \ --recommender=google.container.DiagnosisRecommender \ --location=LOCATION \ --project=PROJECT_ID \ --format=FORMAT \ --filter="recommenderSubtype:SUBTYPE"
將
SUBTYPE
替換為推薦工具子類型,例如DEPRECATION_K8S_1_23_CERTIFICATE
。這會將輸出內容限制為指定子類型的建議。這個旗標是選用的。或者,如果您已有最佳化建議 ID,可以執行下列指令來查看最佳化建議:
gcloud recommender recommendations describe RECOMMENDATION_ID \ --recommender=google.container.DiagnosisRecommender \ --location=LOCATION \ --project=PROJECT_ID \ --format=FORMAT
將
RECOMMENDATION_ID
替換為步驟 1 中指令輸出內容的associatedRecommendations.recommendation
儲存值。輸出內容會提供指引,說明您可能需要採取哪些動作,才能最佳化叢集的 GKE 用量。
API
每項洞察資料都有對應的建議。深入分析資訊是透過 REST 資源:projects.locations.insightTypes.insights 擷取,建議則是透過 REST 資源:projects.locations.recommenders.recommendations 擷取。
查看特定可用區 (適用於區域叢集) 或特定地區 (適用於地區叢集) 的叢集洞察資料清單:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.container.DiagnosisInsight/insights?filter=insightSubtype%20%3D%20SUBTYPE
更改下列內容:
PROJECT_ID
:叢集所在專案的 Google Cloud 專案 ID。LOCATION
:叢集的確切區域或可用區。 如果是可用區叢集,您必須提供確切的可用區 (例如us-central1-c
)。如果是區域叢集,您必須提供確切的區域 (例如us-central1
)。SUBTYPE
:洞察子類型,例如DEPRECATION_K8S_1_23_CERTIFICATE
。這會將輸出內容限制為指定子類型的洞察資料。這個旗標是選用的。
或者,如果您已有洞察 ID,可以發出下列要求,查看洞察的詳細資料:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.container.DiagnosisInsight/insights/INSIGHT
將
INSIGHT
替換為洞察 ID 值,該值位於洞察的name
欄位網址結尾。回應主體會詳細說明 GKE 在叢集中偵測到的行為。
查看特定可用區 (適用於區域叢集) 或特定區域 (適用於地區叢集) 叢集的建議清單:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.container.DiagnosisRecommender/recommendations?filter=recommenderSubtype%20%3D%20SUBTYPE
將
SUBTYPE
替換為推薦工具子類型,例如DEPRECATION_K8S_1_23_CERTIFICATE
。這會將輸出內容限制為指定子類型的建議。這個旗標是選用的。或者,如果您已有建議 ID,可以提出下列要求來查看建議:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.container.DiagnosisRecommender/recommendations/RECOMMENDATION_ID
將
RECOMMENDATION_ID
替換為步驟 1 回應主體中儲存的associatedRecommendations.recommendation
值。回應內容會提供指引,說明您可能需要採取哪些動作,才能最佳化叢集的 GKE 用量。
將洞察資料和最佳化建議匯出至 BigQuery
您可以使用 BigQuery 匯出及分析整個機構的洞察資料和建議。詳情請參閱「將建議匯出至 BigQuery」。
關閉或還原建議
如果不想再於Google Cloud 控制台中看到叢集建議,請將其關閉。舉例來說,如果您評估過建議,並決定不採用,就可以這麼做。
如果選擇忽略建議,管理控制台中的叢集就不會向任何使用者顯示這項建議。即使 GKE 偵測到相同行為,系統也不會再次顯示已關閉的建議。
關閉建議後,系統只會從主控台隱藏建議,您仍可透過 Google Cloud CLI 和 Recommender API 探索建議。
關閉建議
如要關閉這項建議,請按照查看洞察資料和最佳化建議一節的說明,在Google Cloud 控制台中開啟側欄面板,查看更多詳細資料。在該面板中,按一下「關閉」按鈕。
還原已關閉的建議
如要還原已關閉的最佳化建議,請按照「還原最佳化建議」一文中的操作說明進行。
後續步驟
- 進一步瞭解建議工具