Google Kubernetes Engine (GKE) 提供規範性指引,協助您最佳化叢集。
GKE 會監控叢集,並在有潛在最佳化空間時,透過建議工具提供指引。這項 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:修正 CA 組合無效、設定錯誤的 CRD,確保叢集穩定運作。
- etcd 用量:確保 etcd 資料庫有足夠的儲存空間,以免叢集不穩定。
事前準備
開始之前,請確認您已執行下列工作:
- 啟用 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 查看洞察和建議。
控制台
在控制台查看建議時,有兩種做法。您可以使用檢視畫面頂端的高階評量表,查看專案中所有叢集的健康狀態、升級和成本最佳化建議匯總結果。
或者,您也可以查看各叢集的建議清單。
如要使用評量表查看建議,請按照下列步驟操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面:
如要查看受個別建議影響的叢集數量,請在要查看的類別 (「Health」(健康狀態)、「Upgrade」(升級) 或「Cost」(費用)) 下方,按一下「View recommendations」(查看建議)。在顯示的側欄面板中,建議清單會指出每項建議影響的叢集數量。
如要查看更多資訊 (包括受影響叢集的名稱),請按一下建議名稱。
如要查看各個受影響叢集的詳細資料,請再次點選建議。
如要查看各叢集的建議,請按照下列步驟操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面:
查看特定叢集的「Notifications」(通知) 欄,找出洞察資料和建議。
如要查看更多資訊,請點選洞察資料。在顯示的側欄面板中,您可以查看這項洞察的詳細資料,包括任何相關聯的建議。
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 控制台中開啟側欄面板,查看更多詳細資料。在該面板中,按一下「關閉」按鈕。
使用 Google Cloud CLI 略過建議
如要使用 gcloud CLI 關閉建議,您必須找出有效建議的「etag 值」,然後將其標示為已關閉。
列出有效的建議:如要找出要關閉的建議,請列出叢集的有效建議。如要排除已關閉、成功或失敗的建議,請使用
--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)。
擷取 etag:從先前的輸出內容中找出
RECOMMENDATION_ID,並說明該項目,以擷取其目前狀態和etag:gcloud recommender recommendations describe RECOMMENDATION_ID \ --recommender=RECOMMENDER_ID \ --project=PROJECT_ID \ --location=LOCATION更改下列內容:
RECOMMENDATION_ID:要略過的建議 ID。
記下輸出內容中的
etag值 (例如"a770e444b0088a35")。標示為已關閉:執行
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值。
還原已關閉的最佳化建議
如要還原已關閉的最佳化建議,請按照這篇文章的指示操作。
後續步驟
- 進一步瞭解建議工具