非推奨に関する分析情報と推奨事項の表示


このページでは、Google Kubernetes Engine(GKE)クラスタの Kubernetes の非推奨に関する分析情報と推奨事項を表示する方法について説明します。GKE で Kubernetes の非推奨を管理する方法については、GKE の非推奨をご覧ください。

非推奨に関する分析情報と推奨事項

非推奨となり、今後のマイナー バージョンで削除される Kubernetes 機能または API がクラスタで使用されていることを GKE が検出すると、次の処理が発生します。

非推奨に関する分析情報と推奨事項は、Google Cloud でリソースを使用するための分析情報と推奨事項を提供するサービスである Recommender から入手できます。Recommender が GKE でどのように機能するかの詳細については、分析情報と推奨事項で GKE の使用を最適化するをご覧ください。

Recommender での非推奨のトピックにおいて:

  • 分析情報では、非推奨となり、今後のマイナー バージョンで削除される予定の機能または API をクラスタが使用していることを説明します。
  • 推奨事項では、クラスタの非推奨度の軽減策について説明します。

たとえば、分析情報では、非推奨となり、次のマイナー バージョンで削除されるベータ版 API をクラスタが使用していることについて説明される場合があります。この推奨事項では、ワークロードをベータ版 API の使用から v1 API の使用に移行する必要があることが説明されます。各推奨事項には、非推奨になった機能または API の移行ガイドへの参照が含まれています。この移行ガイドは、Kubernetes の非推奨に対応する表でも確認できます。

GKE で分析情報と推奨事項のペアが生成されると、プロジェクト内の 1 つのクラスタに対する特定の分析情報のサブタイプに属する非推奨の Kubernetes API または機能の使用が含まれます。たとえば、ユーザー エージェントが DEPRECATION_K8S_1_22_V1BETA1_API サブタイプで対処される API のいずれかを呼び出すと、1 つの分析情報と推奨事項が表示され、これらの API の使用からこのクラスタを移行することが推奨されます。別のクラスタもこれらの API を使用している場合、GKE は別の分析情報と推奨事項を生成します。

GKE によって検出された非推奨の Kubernetes 機能と API の使用

非推奨 以下の GKE バージョンで削除 分析情報のサブタイプ
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 Common Name(CN)フィールド 1.23 DEPRECATION_K8S_1_23_CERTIFICATE
Kubernetes 1.22 の非推奨 API
GKE 1.23 で削除された Kubernetes Ingress ベータ版 API
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. 分析情報をクリックして詳細を表示します。表示されたサイドバー パネルには、関連する推奨事項を含む、この分析情報の詳細が表示されます。

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 は、分析情報の name フィールドの URL の末尾に指定された分析情報 ID に置き換えます。

    出力には、GKE がクラスタで検出した動作に関する詳細な補足情報が含まれます。

  2. 特定のゾーン(ゾーンクラスタの場合)または特定のリージョン(リージョン クラスタの場合)のクラスタに関する推奨事項の一覧を表示します。

    gcloud recommender recommendations list \
        --recommender=google.container.DiagnosisRecommender \
        --location=LOCATION \
        --project=PROJECT_ID \
        --format=FORMAT \
        --filter="recommenderSubtype:SUBTYPE"
    

    SUBTYPE は、Recommender のサブタイプ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 Resource: projects.locations.insightTypes.insights で取得され、推奨事項は REST Resource: 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 は、分析情報の name フィールドの URL の末尾に指定された分析情報 ID に置き換えます。

    レスポンス本文には、GKE がクラスタで検出した動作の詳細が含まれています。

  2. 特定のゾーン(ゾーンクラスタの場合)または特定のリージョン(リージョン クラスタの場合)のクラスタに関する推奨事項の一覧を表示します。

    GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.container.DiagnosisRecommender/recommendations?filter=recommenderSubtype%20%3D%20SUBTYPE
    

    SUBTYPE は、Recommender のサブタイプ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 で非推奨になった API の使用を 30 日間連続して検出しなくなるまで、またはクラスタのバージョンがサポート終了になるまで、一時停止のままです。詳細については、GKE が自動アップグレードを再開するタイミングをご覧ください。

推奨事項を拒否する

推奨事項を拒否する場合は、分析情報と推奨事項を表示するの手順に沿って、Google Cloud コンソールでサイドバー パネルを開いて詳細を表示します。そのパネルで、[拒否する] ボタンをクリックします。

拒否した推奨事項を復元する

拒否した推奨事項は、推奨事項を復元するの手順に沿って復元できます。

次のステップ