本頁面說明如何查看 Google Kubernetes Engine (GKE) 叢集的 Kubernetes 淘汰項目相關洞察和建議。如要進一步瞭解如何透過 GKE 管理 Kubernetes 淘汰項目,請參閱「功能和 API 淘汰項目」。
什麼是淘汰洞察和建議?
如果 GKE 偵測到叢集使用已淘汰的 Kubernetes 功能或 API,且這些功能或 API 會在即將推出的子版本中移除,就會發生下列情況:
- 自動升級至下一個子版本的功能已暫停。如要進一步瞭解運作方式,請參閱「GKE 暫停自動升級時會發生什麼情況」。
- 系統會產生洞察資料和建議,方便您評估及降低叢集受到淘汰影響的程度。
您可以透過 Recommender 取得淘汰深入分析資料和建議。這項服務會提供在Google Cloud上使用資源的深入分析資料和建議。如要進一步瞭解 Recommender 如何搭配 GKE 使用,請參閱「透過深入分析和建議,充分運用 GKE」。
如要瞭解 Recommender 的淘汰項目主題:
- 洞察說明叢集使用的功能或 API 已淘汰,且會在即將推出的子版本中移除。
- 最佳化建議會提供指引,說明如何降低叢集因淘汰而受到的影響。
舉例來說,洞察資訊可能會說明叢集使用的 Beta 版 API 已淘汰,且會在下一個子版本中移除。建議內容說明您應將工作負載從 Beta 版 API 遷移至 v1 版 API。每項建議都包含已淘汰功能或 API 的遷移指南參考資料。您也可以在Kubernetes 淘汰項目對應的表格中找到這份遷移指南。
GKE 產生洞察資料和建議時,會涵蓋專案中某個叢集內,任何已淘汰的 Kubernetes API 或功能,並歸類到洞察資料子類型。舉例來說,如果任何使用者代理程式呼叫 DEPRECATION_K8S_1_22_V1BETA1_API
子類型處理的任何 API,系統就會顯示洞察資料和建議,建議您從使用這些 API 遷移這個叢集。如果其他叢集也使用這些 API,GKE 會產生另一項洞察資料和建議。
GKE 偵測到使用已淘汰的 Kubernetes 功能和 API
淘汰 | 已在 GKE 版本中移除 | 洞察子類型 |
---|---|---|
Containerd 1.7 功能 | 1.33 | DEPRECATION_CONTAINERD_V1_SCHEMA_IMAGES 、DEPRECATION_CONTAINERD_V1ALPHA2_CRI_API |
Kubernetes 1.32 已淘汰的 API | 1.32 | DEPRECATION_K8S_1_32_API |
以 SHA-1 演算法簽署的 TLS 憑證 | 1.29 | DEPRECATION_K8S_SHA_1_CERTIFICATE |
Kubernetes 1.29 已淘汰的 API | 1.29 | DEPRECATION_K8S_1_29_API |
Kubernetes 1.27 已淘汰的 API | 1.27 | DEPRECATION_K8S_1_27_API |
Kubernetes 1.26 已淘汰的 API | 1.26 | DEPRECATION_K8S_1_26_API |
Kubernetes 1.25 已淘汰的 API | 1.25 | DEPRECATION_K8S_1_25_API |
PodSecurityPolicy | 1.25 | DEPRECATION_K8S_1_25_PODSECURITYPOLICY |
以 Docker 為基礎的節點映像檔 | 1.24 | DEPRECATION_K8S_1_24_DOCKERSHIM |
Webhook 憑證中的 X.509 通用名稱欄位 | 1.23 | DEPRECATION_K8S_1_23_CERTIFICATE |
Kubernetes 1.22 已淘汰的 API、
Kubernetes Ingress Beta 版 API 已在 GKE 1.23 中移除 |
1.22、1.23 | DEPRECATION_K8S_1_22_V1BETA1_API |
請注意,對於即將淘汰的項目,您必須自行評估叢集環境的曝險程度,並解決任何問題。
事前準備
開始之前,請確認你已完成下列工作:
- 啟用 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 用量。
例如:洞察
淘汰洞察資訊包括淘汰功能或 API 的使用時間和用量詳細資料。洞察資訊中包含的資訊取決於洞察資訊提供資訊的淘汰類型。
這是 DEPRECATION_K8S_1_22_V1BETA1_API
洞察資訊
子類型的洞察資訊範例:
name: projects/<PROJECT-NUMBER>/locations/us-central1/insightTypes/google.container.DiagnosisInsight/insights/<INSIGHT-ID>
observationPeriod: 2592000s
severity: HIGH
category: RELIABILITY
stateInfo:
state: ACTIVE
insightSubtype: DEPRECATION_K8S_1_22_V1BETA1_API
description: Your API clients have used deprecated APIs in the last 30 days that are removed in Kubernetes v1.22. Upgrading your cluster before migrating to the updated APIs supported by v1.22 could cause it to break. [Learn more](https://kubernetes.io/docs/reference/using-api/deprecation-guide/#v1-22).
targetResources:
- //container.googleapis.com/projects/<PROJECT-NUMBER>/locations/us-central1/clusters/c1
associatedRecommendations:
- recommendation: projects/<PROJECT-NUMBER>/locations/us-central1/recommenders/google.container.DiagnosisRecommender/recommendations/<RECOMMENDATION-ID>
etag: '"2147dd8e1e302ed7"'
lastRefreshTime: "2022-01-30T08:00:00Z"
content:
targetClusters:
- clusterId: <CLUSTER-ID>
clusterUri: //container.googleapis.com/projects/<PROJECT-NUMBER>/locations/us-central1/clusters/c1
apiDeprecationInsight:
- api: /apis/networking.k8s.io/v1beta1/Ingress
stopServingVersion: 1.22
deprecatedClientStats:
userAgent: kubectl
numberOfRequestsLast30Days: 288
lastRequestTime: "2022-02-30T08:00:18Z"
- api: /apis/rbac.authorization.k8s.io/v1beta1/ClusterRole
stopServingVersion: 1.22
deprecatedClientStats:
userAgent: kubectl
numberOfRequestsLast30Days: 126
lastRequestTime: "2022-02-01T06:45:25Z"
範例:建議
淘汰建議會包含淘汰說明,以及淘汰項目的遷移指南連結。您也可以在 GKE 功能淘汰項目表和 Kubernetes API 淘汰項目表中找到這些遷移指南。
以下是「DEPRECATION_K8S_1_22_V1BETA1_API
」建議子類型的建議範例:
name: projects/<PROJECT-NUMBER>/locations/us-central1/recommenders/google.container.DiagnosisRecommender/recommendations/<RECOMMENDATION-ID>
description: Update manifests and API clients to use v1 API before upgrading to Kubernetes 1.22 by following the [instructions](https://cloud.google.com/kubernetes-engine/docs/deprecations/apis-1-22).
primaryImpact:
category: RELIABILITY
reliabilityProjection:
risks:
- SERVICE_DISRUPTION
priority: P2
recommenderSubtype: DEPRECATION_K8S_1_22_V1BETA1_API
stateInfo:
state: ACTIVE
targetResources:
- //container.googleapis.com/projects/<PROJECT-NUMBER>/locations/us-central1/clusters/c1
associatedInsights:
- insight: projects/<PROJECT-NUMBER>/locations/us-central1/insightTypes/google.container.DiagnosisInsight/insights/<INSIGHT-ID>
etag: '"4dc0f7b33594072f"'
lastRefreshTime: "2022-01-30T08:00:00Z"
content:
overview:
targetClusters:
- clusterId: <CLUSTER-ID>
clusterUri: //container.googleapis.com/projects/<PROJECT-NUMBER>/locations/us-central1/clusters/c1
apiDeprecationRecommendation:
- api: /apis/networking.k8s.io/v1beta1/Ingress
apiReplacement: /apis/networking.k8s.io/v1/Ingress
stopServingVersion: 1.22
- api: /apis/rbac.authorization.k8s.io/v1beta1/ClusterRole
apiReplacement: /apis/rbac.authorization.k8s.io/v1/ClusterRole
stopServingVersion: 1.22
將洞察資料和最佳化建議匯出至 BigQuery
您可以使用 BigQuery 匯出及分析整個機構的洞察資料和建議。詳情請參閱「將建議匯出至 BigQuery」。
略過或還原淘汰建議
如果不想再在Google Cloud 控制台中看到叢集的淘汰建議,請將其關閉。舉例來說,您可能會這麼做,以關閉適用於暫時性短期叢集的建議。
如果選擇忽略建議,管理控制台中的叢集就不會向任何使用者顯示這項建議。您關閉建議後,即使使用者代理程式在關閉後,於這個子類型中呼叫已淘汰的 API 或功能,系統也不會再次顯示建議。
不過,您還是可以透過 Google Cloud CLI 和 Recommender API 探索建議。
關閉建議後,系統只會為所有使用者隱藏建議,在您從已淘汰的功能或 API 遷移,且 GKE 連續 30 天未偵測到使用已淘汰的 API,或叢集版本達到支援期限前,自動升級會維持暫停狀態。詳情請參閱「GKE 何時會恢復自動升級?」。
關閉建議
如要關閉這項建議,請按照查看洞察資料和最佳化建議一節的說明,在Google Cloud 控制台中開啟側欄面板,查看更多詳細資料。在該面板中,按一下「關閉」按鈕。
還原已關閉的建議
如要還原已關閉的最佳化建議,請按照「還原最佳化建議」一文中的操作說明進行。
後續步驟
- 如要進一步瞭解 GKE 的淘汰程序,請參閱「功能和 API 淘汰」一文。
- 如要進一步瞭解 Recommender API,請參閱「使用 API - 建議」。