查看淘汰功能的深入分析和建議


本頁面說明如何查看 Google Kubernetes Engine (GKE) 叢集的 Kubernetes 淘汰項目相關洞察建議。如要進一步瞭解如何透過 GKE 管理 Kubernetes 淘汰項目,請參閱「功能和 API 淘汰項目」。

什麼是淘汰洞察和建議?

如果 GKE 偵測到叢集使用已淘汰的 Kubernetes 功能或 API,且這些功能或 API 會在即將推出的子版本中移除,就會發生下列情況:

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

控制台

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

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

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

  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 用量。

例如:洞察

淘汰洞察資訊包括淘汰功能或 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 控制台中開啟側欄面板,查看更多詳細資料。在該面板中,按一下「關閉」按鈕。

還原已關閉的建議

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

後續步驟