Kubernetes 1.25 の非推奨 API


このページでは、GKE バージョン 1.25 へのアップグレード用にクラスタを準備する方法について説明します。1.25 で削除された非推奨 API を呼び出している API クライアントを確認し、一般提供の API を使用するようにクライアントを更新できます。詳しくは、Kubernetes 非推奨 API 移行ガイドをご覧ください。

1.25 で削除された API

Kubernetes バージョン 1.25 の非推奨 API のほとんどは以前のベータ版 API で、その後、ベータ版(v1beta1 など)から一般提供(v1 など)に移行されました。一般提供の API では、長期の互換性が保証されます。非推奨のベータ版 API の代わりに、一般提供の API を使用してください。

一般提供に移行した API の既存のオブジェクトはすべて、一般提供の API を使用して操作できます。

EndpointSlice

EndpointSlice のベータ版 API バージョン(discovery.k8s.io/v1beta1)は、バージョン 1.25 で提供されなくなりました。この API はバージョン 1.21 で非推奨になりました。

  • マニフェストと API クライアントを移行して、discovery.k8s.io/v1 API バージョンを使用します。
  • 一般提供の API バージョンの重要な変更点については、次の表をご覧ください。

    フィールド 変更
    endpoints[*].topology["kubernetes.io/hostname"] endpoints[*].nodeName を使用してください。
    endpoints[*].topology["topology.kubernetes.io/zone"] endpoints[*].zone を使用してください。
    endpoints[*].topology endpoints[*].deprecatedTopology に置き換えられ、v1 で書き込みできなくなりました。

PodDisruptionBudget

PodDisruptionBudget のベータ版 API バージョン(policy/v1beta1)は、バージョン 1.25 で提供されなくなりました。この API はバージョン 1.21 で非推奨になりました。

  • マニフェストと API クライアントを移行して、policy/v1 API バージョンを使用します。
  • 一般提供の API バージョンの重要な変更点については、次の表をご覧ください。

    フィールド 変更
    spec.selector policy/v1 PodDisruptionBudget に空の値({})が書き込まれると、Namespace 内のすべての Pod が選択されます。値を設定しない場合、Pod が選択されないことに変わりありません。

CronJob

CronJob のベータ版 API バージョン(batch/v1beta1)は、バージョン 1.25 で提供されなくなりました。この API はバージョン 1.21 で非推奨になりました。マニフェストと API クライアントを移行して、batch/v1 API バージョンを使用します。

PodSecurityPolicy

PodSecurityPolicy のベータ版 API バージョン(policy/v1beta1)は、バージョン 1.25 で提供されなくなりました。この API はバージョン 1.21 で非推奨になりました。

詳細については、PodSecurityPolicy のサポートの終了をご覧ください。

RuntimeClass

RuntimeClass のベータ版 API バージョン(node.k8s.io/v1beta1)は、バージョン 1.25 で提供されなくなりました。この API はバージョン 1.20 で非推奨になりました。マニフェストと API クライアントを移行して、node.k8s.io/v1 API バージョンを使用します。

イベント

Events のベータ版 API バージョン(events.k8s.io/v1beta1)は、バージョン 1.25 で提供されなくなりました。この API はバージョン 1.19 で非推奨になりました。

  • マニフェストと API クライアントを移行して、v1 API バージョンまたは events.k8s.io/v1 API バージョンを使用します。
  • 一般提供の API バージョンの重要な変更点については、次の表をご覧ください。

    フィールド 変更
    type NormalWarning に限定されます。
    involvedObject 名前が regarding に変わりました。
    actionreasonreportingControllerreportingInstance イベントの作成時にこれらのフィールドが必須になりました。
    firstTimestamp deprecatedFirstTimestamp に名前が変更されました。新しいイベントでは使用できなくなりました。代わりに eventTime を使用してください。
    lastTimestamp deprecatedLastTimestamp に名前が変更されました。新しいイベントでは使用できなくなりました。代わりに series.lastObservedTime を使用してください。
    count deprecatedCount に名前が変更されました。新しいイベントでは使用できなくなりました。代わりに series.count を使用してください。
    source.component deprecatedSource.component に名前が変更されました。新しいイベントでは使用できなくなりました。代わりに reportingController を使用してください。
    source.host deprecatedSource.host に名前が変更されました。新しいイベントでは使用できなくなりました。代わりに reportingInstance を使用してください。

HorizontalPodAutoscaler

HorizontalPodAutoscaler のベータ版 API バージョン(autoscaling/v2beta1)は、バージョン 1.25 で提供されなくなりました。この API はバージョン 1.23 で非推奨になりました。マニフェストと API クライアントを移行して、autoscaling/v2 HorizontalPodAutoscaler API バージョンを使用します。

1.25 へのアップグレードの準備

ユーザーは API オブジェクトを削除して再生成することは必要ありません。一般提供が開始された API の既存のすべての API オブジェクトは、すでに新しい API バージョンを使用して読み込み、更新できる状態になっています。

ただし、Kubernetes 1.25 にアップグレードする前に、クライアントとマニフェストを移行することをおすすめします。詳細については、Kubernetes の非推奨 API の移行ガイドをご覧ください。

非推奨に関する分析情報と推奨事項を表示して、クラスタが Kubernetes 1.25 の非推奨の API を使用しているかどうかを判断できます。GKE は、Kubernetes オブジェクトの構成からではなく、ユーザー エージェントが非推奨の API を呼び出したときに非推奨に関する分析情報を生成します。

非推奨の API を使用しているクラスタを確認する

非推奨の API を使用しているクラスタは、非推奨に関する分析情報で確認できます。また、非推奨に関する分析情報では、どの API クライアントがクラスタ内で非推奨の API を呼び出しているのかなどの情報も表示できます。

監査ログを使用して、非推奨の API を呼び出しているクライアントを確認することもできます。

非推奨の API への書き込み呼び出しを行う API クライアントを特定する

Google Cloud Observability が有効になっているクラスタでは、次の管理アクティビティ監査ログクエリを使用すると、Google の管理外のユーザー エージェントによる非推奨の API の使用を確認できます。

resource.type="k8s_cluster"
labels."k8s.io/removed-release"="DEPRECATED_API_MINOR_VERSION"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:kube-system:")

DEPRECATED_API_MINOR_VERSION は、非推奨の API が削除されたマイナー バージョン(1.22 など)に置き換えます。

GKE クラスタに対して管理アクティビティ監査ログが自動的に有効になります。このクエリを使用して、非推奨の API への書き込み呼び出しを行っているユーザー エージェントがログに表示されます。

非推奨の API への読み取り呼び出しを行う API クライアントを特定する

デフォルトでは、監査ログには非推奨の API への書き込み呼び出しのみが表示されます。非推奨の API への読み取り呼び出しも表示するには、データアクセス監査ログを構成します。

手順に沿って、Google Cloud コンソールでデータアクセスの監査ログを構成します。Google Cloud コンソールで、Kubernetes Engine API を選択します。情報パネルの [ログタイプ] タブで、Admin ReadData Read を選択します。

これらのログを有効にすると、元のクエリを使用して、非推奨の API に対する読み取り呼び出しと書き込み呼び出しの両方を確認できます。

サードパーティ コンポーネントのアップグレード

非推奨に関する分析情報に、クラスタ内の非推奨の API を呼び出すサードパーティ エージェントの結果が表示されます。

非推奨の API を呼び出しているサードパーティ エージェントを解決するには、次のベスト プラクティスをおすすめします。

  1. サードパーティ ソフトウェアのプロバイダに問い合わせて、最新バージョンを確認します。
  2. サードパーティ ソフトウェアを最新バージョンにアップグレードします。ソフトウェアをアップグレードできない場合は、GKE を非推奨の API を削除したバージョンにアップグレードするとサービスが停止するかどうかをテストする必要があります。

本番環境クラスタをアップグレードする前に、ステージング クラスタでこのアップグレードと GKE バージョンのアップグレードを行って、中断が発生しないかどうかモニタリングすることをおすすめします。

非推奨化の影響を受けるクラスタを更新する

非推奨の影響を受けるクラスタをアップグレードする手順は、次のとおりです。

  1. ログで、非推奨の API を使用しているユーザー エージェントを確認します。
  2. 非推奨の API を使用するユーザー エージェントを、サポート対象の API バージョンを使用するように更新します。
  3. 非推奨の API を呼び出すサードパーティ ソフトウェアを最新バージョンに更新します。
  4. 非推奨の API が使用不能になった場合の中断のリスクを軽減するために、本番環境クラスタをアップグレードする前に、テスト用クラスタをアップグレードしてテスト環境でアプリケーションをテストします。
  5. 影響を受けるユーザー エージェントを更新できない場合は、別のテストクラスタをアップグレードして、アップグレードで中断が発生するかどうかを確認します。アップグレードで中断が発生しない場合は、クラスタを手動でアップグレードできます。
  6. すべてのユーザー エージェントを更新すると、GKE は非推奨の API の使用が 30 日間観察されなくなるまで待機し、その後、自動アップグレードのブロックを解除します。自動アップグレードはリリース スケジュールに沿って行われます。

リソース

詳細については、以下の OSS Kubernetes ドキュメントをご覧ください。