5.2. Kubernetes API の非推奨化と削除
OpenShift Container Platform 4.13 は Kubernetes 1.26 を使用します。これにより、いくつかの非推奨 API が削除されました。
クラスター管理者は、クラスターを OpenShift Container Platform 4.12 から 4.13 にアップグレードする前に、手動で確認を行う必要があります。削除された API が、クラスター上で実行されている、またはクラスターと対話しているワークロード、ツール、またはその他のコンポーネントによって引き続き使用される OpenShift Container Platform 4.13 にアップグレードした後の問題を防ぐ上で役立ちます。管理者は、削除が予定されている使用中の API に対するクラスターの評価を実施し、影響を受けるコンポーネントを移行して適切な新規 API バージョンを使用する必要があります。この評価および移行が完了したら、管理者は確認応答を提供できます。
OpenShift Container Platform 4.12 クラスターを 4.13 に更新する前に、管理者の確認を提供する必要があります。
5.2.1. Kubernetes API の削除
OpenShift Container Platform 4.13 は Kubernetes 1.26 を使用します。これにより、以下の非推奨 API が削除されました。適切な API バージョンを使用するには、マニフェストと API クライアントを移行する必要があります。削除された API の移行について、詳細は Kubernetes documentation を参照してください。
リソース | 削除された API | 移行先 |
---|---|---|
|
|
|
|
|
|
|
|
|
5.2.2. 削除された API に対するクラスターの評価
削除される API が使用されている場所を管理者が特定するのに役立つ方法は複数あります。ただし、OpenShift Container Platform は、アイドル状態や外部ツールが使用されるワークロードなどのすべてのインスタンスを特定できません。すべてのワークロードと削除された API のインスタンスに対する他の統合を適切に評価することは管理者の責任です。
5.2.2.1. 削除された API の使用を特定するためのアラートの確認
次のリリースで削除予定の API が使用されている場合に 2 つのアラートが発生します。
-
APIRemovedInNextReleaseInUse
: OpenShift Container Platform の次のリリースで削除される API の場合 -
APIRemovedInNextEUSReleaseInUse
: 次の OpenShift Container Platform Extended Update Support (EUS) リリースで削除される API の場合
これらのアラートのいずれかがクラスターで実行している場合は、アラートを確認し、マニフェストおよび API クライアントを移行して新規 API バージョンを使用することによりアラートをクリアします。
アラートにはこの情報が含まれないため、APIRequestCount
API を使用して、使用中の API と削除された API を使用しているワークロードに関する詳細情報を取得します。さらに、API によってはこれらのアラートがトリガーされない場合もありますが、APIRequestCount
がキャプチャーします。アラートは、機密性が低くなるように調整して、実稼働システムでのアラートの疲弊を回避します。
5.2.2.2. APIRequestCount を使用して削除された API の使用状況を特定
APIRequestCount
API を使用して API 要求を追跡し、それらのいずれかが削除された API のいずれかを使用しているかどうかを確認することができます。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
以下のコマンドを実行し、出力された
REMOVEDINRELEASE
列を確認して、現在使用中の削除された API を特定します。$ oc get apirequestcounts
出力例
NAME REMOVEDINRELEASE REQUESTSINCURRENTHOUR REQUESTSINLAST24H ... flowschemas.v1beta1.flowcontrol.apiserver.k8s.io 1.26 0 16 flowschemas.v1beta2.flowcontrol.apiserver.k8s.io 101 857 groups.v1.user.openshift.io 22 201 hardwaredata.v1alpha1.metal3.io 3 33 helmchartrepositories.v1beta1.helm.openshift.io 142 628 horizontalpodautoscalers.v2.autoscaling 11 103 horizontalpodautoscalers.v2beta2.autoscaling 1.26 0 15 ...
重要結果に表示される以下のエントリーは無視しても問題はありません。
-
system:serviceaccount:kube-system:generic-garbage-collector
およびsystem:serviceaccount:kube-system:namespace-controller
ユーザーは、削除するリソースの検索時に登録されたすべての API を呼び出すので、結果に表示される可能性があります。 -
system:kube-controller-manager
およびsystem:cluster-policy-controller
ユーザーは、さまざまなポリシーを適用しながらすべてのリソースをウォークスルーするため、結果に表示される場合があります。
-o jsonpath
を使用して結果をフィルタリングすることもできます。$ oc get apirequestcounts -o jsonpath='{range .items[?(@.status.removedInRelease!="")]}{.status.removedInRelease}{"\t"}{.metadata.name}{"\n"}{end}'
出力例
1.26 flowschemas.v1beta1.flowcontrol.apiserver.k8s.io 1.26 horizontalpodautoscalers.v2beta2.autoscaling
-
5.2.2.3. APIRequestCount を使用して削除された API を使用しているワークロードを特定
特定の API バージョンの APIRequestCount
リソースを確認することで、API を使用しているワークロードを特定できます。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
以下のコマンドを実行して
username
およびuserAgent
を確認すると、API を使用しているワークロードの特定に役立ちます。$ oc get apirequestcounts <resource>.<version>.<group> -o yaml
以下に例を示します。
$ oc get apirequestcounts flowschemas.v1beta1.flowcontrol.apiserver.k8s.io -o yaml
-o jsonpath
を使用して、APIRequestCount
リソースからusername
およびuserAgent
の値を抽出することもできます。$ oc get apirequestcounts flowschemas.v1beta1.flowcontrol.apiserver.k8s.io \ -o jsonpath='{range .status.currentHour..byUser[*]}{..byVerb[*].verb}{","}{.username}{","}{.userAgent}{"\n"}{end}' \ | sort -k 2 -t, -u | column -t -s, -NVERBS,USERNAME,USERAGENT
出力例
VERBS USERNAME USERAGENT get system:serviceaccount:openshift-cluster-version:default cluster-version-operator/v0.0.0 watch system:serviceaccount:openshift-oauth-apiserver:oauth-apiserver-sa oauth-apiserver/v0.0.0
5.2.3. 削除された API インスタンスの移行
削除された Kubernetes API を移行する方法は、Kubernetes ドキュメントの Deprecated API Migration Guide を参照してください。
5.2.4. 管理者の確認の提供
削除された API についてクラスターを評価し、削除された API を移行すると、クラスターが OpenShift Container Platform 4.12 から 4.13 にアップグレードできることを確認できます。
この管理者の確認を提供する前に、削除された API のすべての使用が解決され、必要に応じて移行されたことを確認するすべての責任は管理者にあることに注意してください。OpenShift Container Platform はその評価を支援できますが、とくにアイドル状態のワークロードや外部ツールなど、削除された API の考えられるすべての用途を特定することはできません。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
以下のコマンドを実行して、評価が完了し、クラスターが OpenShift Container Platform 4.13 で Kubernetes API を削除する準備ができていることを確認します。
$ oc -n openshift-config patch cm admin-acks --patch '{"data":{"ack-4.12-kube-1.26-api-removals-in-4.13":"true"}}' --type=merge