5.2. 削除された API に対するクラスターの評価
削除される API が使用されている場所を管理者が特定するのに役立つ方法は複数あります。ただし、OpenShift Container Platform は、アイドル状態や外部ツールが使用されるワークロードなどのすべてのインスタンスを特定できません。すべてのワークロードと削除された API のインスタンスに対する他の統合を適切に評価することは管理者の責任です。
5.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. 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.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