運用洞察資料和最佳化建議,提升 GKE 使用效率


您可以透過 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 查看深入分析和建議。

控制台

在控制台中查看建議時,有兩個選項。您可以使用檢視畫面頂端的高階評量表,查看專案中所有叢集的健康狀態、升級和成本最佳化建議的匯總結果。

您也可以查看每個叢集的建議清單。

如要使用評分表查看建議,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面:

    前往「Google Kubernetes Engine」

  2. 如要查看個別最佳化建議影響的叢集數量,請按一下要查看類別 (健康狀態、升級或費用) 下方的「查看最佳化建議」。在顯示的側欄面板中,建議清單會指出各項建議影響的叢集數量。

  3. 如要查看更多資訊,包括受影響的叢集名稱,請按一下建議名稱。

  4. 如要查看每個受影響叢集的詳細資料,請再次點選建議。

如要查看各叢集的建議,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面:

    前往「Google Kubernetes Engine」

  2. 查看特定叢集的「通知」欄,瞭解洞察資料和建議。

  3. 如要查看更多資訊,請按一下洞察資料。在顯示的側邊面板中,您可以查看這項洞察資料的詳細資訊,包括任何相關聯的建議。

gcloud

深入分析通常會對應到建議。洞察資料會透過 gcloud recommender insights 擷取,最佳化建議則會透過 gcloud recommender recommendations 擷取。

  1. 查看特定可用區 (適用於區域叢集) 或特定地區 (適用於地區叢集) 的叢集洞察資料清單:

    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 在叢集中偵測到的行為,以及其他詳細資料。

  2. 查看特定可用區 (適用於區域叢集) 或特定區域 (適用於地區叢集) 叢集的建議清單:

    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 擷取。

  1. 查看特定可用區 (適用於區域叢集) 或特定地區 (適用於地區叢集) 的叢集洞察資料清單:

    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 在叢集中偵測到的行為。

  2. 查看特定可用區 (適用於區域叢集) 或特定區域 (適用於地區叢集) 叢集的建議清單:

    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 控制台中開啟側欄面板,查看更多詳細資料。在該面板中,按一下「關閉」按鈕。

還原已關閉的建議

如要還原已關閉的最佳化建議,請按照「還原最佳化建議」一文中的操作說明進行。

後續步驟