透過深入分析和建議,最佳化 GKE 用量

Google Kubernetes Engine (GKE) 提供規範性指引,協助您最佳化叢集。

GKE 會監控叢集,並在有潛在最佳化空間時,透過建議工具提供指引。這項 Google Cloud 服務會產生洞察資料和建議,協助您使用 Google Cloud資源。針對 GKE,建議工具會提供兩種資訊:

  • 洞察會說明 GKE 偵測到叢集用量可以透過某種方式最佳化。
  • 建議會說明如何最佳化叢集用量。

GKE 會在 Google Cloud 控制台中提供這項資訊,您也可以透過 Google Cloud CLI 和 Recommender API 找到這項資訊。GKE 提供多種主題的建議工具,包括:

事前準備

開始之前,請確認您已執行下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update 指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。

必要的角色

請確認您具備 Kubernetes 洞察和建議所需的權限,可透過下列基本角色或預先定義的角色取得:

查看洞察資料和建議

您可以使用 Google Cloud CLI、Google Cloud 控制台或 Recommender API 查看洞察和建議。

控制台

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

或者,您也可以查看各叢集的建議清單。

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

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

    前往「Google Kubernetes Engine」

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

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

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

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

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

    前往「Google Kubernetes Engine」

  2. 查看特定叢集的「Notifications」(通知) 欄,找出洞察資料和建議。

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

使用 Google Cloud CLI 略過建議

如要使用 gcloud CLI 關閉建議,您必須找出有效建議的「etag 值」,然後將其標示為已關閉。

  1. 列出有效的建議:如要找出要關閉的建議,請列出叢集的有效建議。如要排除已關閉、成功或失敗的建議,請使用 --filter 旗標:

    gcloud recommender recommendations list \
        --recommender=RECOMMENDER_ID \
        --project=PROJECT_ID \
        --location=LOCATION \
        --filter="stateInfo.state=ACTIVE"
    

    更改下列內容:

    • RECOMMENDER_ID:建議工具的 ID。
    • PROJECT_ID:叢集所在專案的 Google Cloud 專案 ID。
    • LOCATION:叢集所在的確切區域或可用區。如果是可用區叢集,您必須提供確切的可用區 (例如 us-central1-c)。如果是區域叢集,則須提供確切的區域 (例如 us-central1)。
  2. 擷取 etag:從先前的輸出內容中找出 RECOMMENDATION_ID,並說明該項目,以擷取其目前狀態和 etag:

    gcloud recommender recommendations describe RECOMMENDATION_ID \
        --recommender=RECOMMENDER_ID \
        --project=PROJECT_ID \
        --location=LOCATION
    

    更改下列內容:

    • RECOMMENDATION_ID:要略過的建議 ID。

    記下輸出內容中的 etag 值 (例如 "a770e444b0088a35")。

  3. 標示為已關閉:執行 mark-dismissed 指令。Recommender API 需要確切的 etag,以避免競爭狀況。

    gcloud recommender recommendations mark-dismissed RECOMMENDATION_ID \
        --recommender=RECOMMENDER_ID \
        --project=PROJECT_ID \
        --location=LOCATION \
        --etag='"ETAG_VALUE"'
    

    更改下列內容:

    • ETAG_VALUE:從 describe 指令傳回的 etag 值。

還原已關閉的最佳化建議

如要還原已關閉的最佳化建議,請按照這篇文章的指示操作。

後續步驟