このページでは、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 バージョンを使用します。
Event
Events
のベータ版 API バージョン(events.k8s.io/v1beta1
)は、バージョン 1.25 で提供されなくなりました。この API はバージョン 1.19 で非推奨になりました。
- マニフェストと API クライアントを移行して、
v1
API バージョンまたはevents.k8s.io/v1
API バージョンを使用します。 一般提供の API バージョンの重要な変更点については、次の表をご覧ください。
フィールド 変更 type
Normal
とWarning
に限定されます。involvedObject
名前が regarding
に変わりました。action
、reason
、reportingController
、reportingInstance
イベントの作成時にこれらのフィールドが必須になりました。 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 Read
と Data Read
を選択します。
これらのログを有効にすると、元のクエリを使用して、非推奨の API に対する読み取り呼び出しと書き込み呼び出しの両方を確認できます。
サードパーティ コンポーネントのアップグレード
非推奨に関する分析情報に、クラスタ内の非推奨の API を呼び出すサードパーティ エージェントの結果が表示されます。
非推奨の API を呼び出しているサードパーティ エージェントを解決するには、次のベスト プラクティスをおすすめします。
- サードパーティ ソフトウェアのプロバイダに問い合わせて、最新バージョンを確認します。
- サードパーティ ソフトウェアを最新バージョンにアップグレードします。ソフトウェアをアップグレードできない場合は、GKE を非推奨の API を削除したバージョンにアップグレードするとサービスが停止するかどうかをテストする必要があります。
本番環境クラスタをアップグレードする前に、ステージング クラスタでこのアップグレードと GKE バージョンのアップグレードを行って、中断が発生しないかどうかモニタリングすることをおすすめします。
非推奨化の影響を受けるクラスタを更新する
非推奨の影響を受けるクラスタをアップグレードする手順は、次のとおりです。
- ログで、非推奨の API を使用しているユーザー エージェントを確認します。
- 非推奨の API を使用するユーザー エージェントを、サポート対象の API バージョンを使用するように更新します。
- 非推奨の API を呼び出すサードパーティ ソフトウェアを最新バージョンに更新します。
- 非推奨の API が使用不能になった場合の中断のリスクを軽減するために、本番環境クラスタをアップグレードする前に、テスト用クラスタをアップグレードしてテスト環境でアプリケーションをテストします。
- 影響を受けるユーザー エージェントを更新できない場合は、別のテストクラスタをアップグレードして、アップグレードで中断が発生するかどうかを確認します。アップグレードで中断が発生しない場合は、クラスタを手動でアップグレードできます。
- すべてのユーザー エージェントを更新すると、GKE は非推奨の API の使用が 30 日間観察されなくなるまで待機し、その後、自動アップグレードのブロックを解除します。自動アップグレードはリリース スケジュールに沿って行われます。
リソース
詳細については、以下の OSS Kubernetes ドキュメントをご覧ください。