このページでは、Google Kubernetes Engine(GKE)クラスタの Kubernetes の非推奨に関する分析情報と推奨事項を表示する方法について説明します。GKE で Kubernetes の非推奨を管理する方法については、GKE の非推奨をご覧ください。
非推奨に関する分析情報と推奨事項
非推奨となり、今後のマイナー バージョンで削除される Kubernetes 機能または API がクラスタで使用されていることを GKE が検出すると、次の処理が発生します。
- 今後のマイナー バージョンへの自動アップグレードは一時停止されています。この仕組みの詳細については、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 で表示できます。
コンソール
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
は、分析情報のname
フィールドの URL の末尾に指定された分析情報 ID に置き換えます。出力には、GKE がクラスタで検出した動作に関する詳細な補足情報が含まれます。
特定のゾーン(ゾーンクラスタの場合)または特定のリージョン(リージョン クラスタの場合)のクラスタに関する推奨事項の一覧を表示します。
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 で取得されます。
特定ゾーン(ゾーンクラスタの場合)または特定リージョン(リージョン クラスタの場合)のクラスタに関する分析情報の一覧を表示します。
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 がクラスタで検出した動作の詳細が含まれています。
特定のゾーン(ゾーンクラスタの場合)または特定のリージョン(リージョン クラスタの場合)のクラスタに関する推奨事項の一覧を表示します。
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 コンソールでサイドバー パネルを開いて詳細を表示します。そのパネルで、[拒否する] ボタンをクリックします。
拒否した推奨事項を復元する
拒否した推奨事項は、推奨事項を復元するの手順に沿って復元できます。
次のステップ
- GKE で非推奨が機能する仕組みについては、GKE の非推奨をご覧ください。
- Recommender API の詳細については、API の使用 - 推奨事項をご覧ください。