Kubernetes API の非推奨化と削除について
免責事項: 以下に示す外部の Web サイトへのリンクは、お客様の利便性のみを目的として提供しています。Red Hat はリンクの内容を確認しておらず、コンテンツまたは可用性について責任を負わないものとします。外部の Web サイトへのリンクを含めることは、Web サイトまたはそれらの法的主体、製品またはサービスについて Red Hat が承認したことを意味するものではありません。お客様は、外部サイトまたはコンテンツの使用 (または信頼) によって生じる損失または費用について、Red Hat が責任を負わないことに同意するものとします。
Kubernetes は、かなり厳格な API バージョン管理ポリシーに従っています。その結果、複数のリリースで、多数の v1beta1 および v2beta1 API の非推奨化が進行しています。ポリシー に従い、Beta API バージョンは非推奨化から 9 カ月または 3 リリース (どちらか長い方) 経過するまではサポートする必要があり、その後で削除可能になります。
クラスター上で実行されている、またはクラスターと対話しているワークロード、ツール、その他のコンポーネントが削除された API を引き続き使用している場所では、障害が発生するようになります。したがって、ユーザー/管理者は、クラスターが削除される予定の API を使用していないか評価し、影響を受けるコンポーネントを新しい適切な API バージョンを使用するように移行することが重要です。
これが完了すると、管理者は管理者完了通知を提供し、API の削除が発生する更新を続行できます。
削除された API を使用してアプリケーションを移行する
削除された Kubernetes API からの移行について、詳細は次を参照してください。
- Red Hat OpenShift Container Platform 4.9 API removals
- Kubernetes ドキュメントの Deprecated API Migration Guide for Kube 1.22 (OCP 4.9)、および OpenShift のパートナーブログ API deprecation in Kubernetes 1.22 that will impact your operators。
- Red Hat OpenShift Container Platform 4.10 - Kubernetes API の削除なし
- Red Hat OpenShift Container Platform 4.11 - Kubernetes API の削除なし
- Red Hat OpenShift Container Platform 4.12 API removals
- Red Hat OpenShift Container Platform 4.13 API removals
- Red Hat OpenShift Container Platform 4.14 API removals
削除された API に関するクラスター評価
管理者はいくつかの方法で、削除予定の API が使用されている場所を特定できます。ただし、OpenShift Container Platform では、特にアイドル状態のワークロードや使用されている外部ツールなど、すべてのインスタンスを特定できるわけではありません。削除された API のインスタンスについて、すべてのワークロードとその他の統合を適切に評価するのは管理者の責任です。
アラートを確認して削除予定 API の使用を特定する
OpenShift Container Platform には、次のリリースで削除予定の API を使用していると発生するアラートが 2 つあります。
APIRemovedInNextReleaseInUse
: 次の OpenShift Container Platform リリースで削除される API 用。APIRemovedInNextEUSReleaseInUse
: 次の OpenShift Container Platform Extended Update Support (EUS) リリースで削除される API 用。
上記アラートのいずれかがクラスター内で発生した場合、アラートを確認し、PI バージョンを使用するためにマニフェストと API クライアントを移行することでアラートをクリアします。
これらのアラートはクラスター全体の監視を目的としており、削除される API を使用しているワークロードを特定するための情報は提供されません。また、運用システムでのアラートによる疲弊を回避するために、これらのアラートの感度は過度に高くならないよう調整されています。APIRequestCount
API を使用すると、どの API が使用されているか、どのワークロードが削除される API を使用しているかについて、詳しい情報を取得できます。一部の API は上記のアラートをトリガーしませんが、その場合も APIRequestCount
によってキャプチャーされる可能性があります。
APIRequestCount
を使用して削除予定 API の使用を特定する
APIRequestCount
API を使用して、API リクエストを追跡し、削除された API を使用していないか確認できます。
重要: 以前の OCP 4.8 リリースには、
APIRequestCount
に影響を与えるバグがありました (BZ 2021629)。これは、OCP 4.8.25 で errata RHBA-2021:5209 により修正されています。APIRequestCount
を確認する前に、新しい OCP 4.8.z リリースにアップグレードすることが推奨されます。注記:
APIRequestCount
API を使用するには、cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる必要があります。
次のコマンドを実行し、出力の REMOVEDINRELEASE
列を調査して、現在使用中で、今後のリリースで削除が予定されている API を特定します。
$ oc get apirequestcounts
出力例:
NAME REMOVEDINRELEASE REQUESTSINCURRENTHOUR REQUESTSINLAST24H
cloudcredentials.v1.operator.openshift.io 32 111
ingresses.v1.networking.k8s.io 28 110
ingresses.v1beta1.extensions 1.22 16 66
ingresses.v1beta1.networking.k8s.io 1.22 0 1
installplans.v1alpha1.operators.coreos.com 93 167
...
-o jsonpath
を使用して結果をフィルタリングすることもできます。
$ oc get apirequestcounts -o jsonpath='{range .items[?(@.status.removedInRelease!="")]}{.status.removedInRelease}{" "}{.status.requestCount}{" "}{.metadata.name}{"n"}{end}'
出力例:
1.22 11 certificatesigningrequests.v1beta1.certificates.k8s.io
1.22 356 ingresses.v1beta1.extensions
1.22 0 ingresses.v1beta1.networking.k8s.io
APIRequestCount
を使用して削除予定 API を使用しているワークロードを特定する
API バージョンを指定して APIRequestCount
リソースを調査すると、その API を使用しているワークロードを特定できます。
重要: 以前の OCP 4.8 リリースには、
APIRequestCount
に影響を与えるバグがありました (BZ 2021629)。これは、OCP 4.8.25 で errata RHBA-2021:5209 により修正されています。APIRequestCount
を確認する前に、新しい OCP 4.8.z リリースにアップグレードすることが推奨されます。注記:
APIRequestCount
API を使用するには、cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる必要があります。
次のコマンドを実行して username
フィールドと userAgent
フィールドを調査し、該当する API を使用しているワークロードを特定します。
$ oc get apirequestcounts <resource>.<version>.<group> -o yaml
以下に例を示します。
$ oc get apirequestcounts ingresses.v1beta1.networking.k8s.io -o yaml
-o jsonpath
を使用して、APIRequestCount
リソースから username
と userAgent
の値を抽出することもできます。
$ oc get apirequestcounts ingresses.v1beta1.networking.k8s.io
-o jsonpath='{range .status.last24h..byUser[*]}{..byVerb[*].verb}{","}{.username}{","}{.userAgent}{"n"}{end}'
| sort -k 2 -t, -u | column -t -s ","
注記: コマンド内の
ingresses.v1beta1.networking.k8s.io
を、引き続き使用されている非推奨 API の名前に変更してください。
注記: 上記のコマンドは、選択した API が 24 時間以内に使用されたかどうかを示します。新しい API を使用するために一部のアプリケーションを変更/アップグレードした場合、last24h
をcurrentHour
に変更して、1 時間以内にその API が使用されたか確認できます。
出力例:
VERBS USERNAME USERAGENT
watch bob oc/v4.8.11
watch system:kube-controller-manager cluster-policy-controller/v0.0.0
重要な注記: 結果に表示される次のエントリーは無視しても問題ありません。
system:serviceaccount:kube-system:generic-garbage-collector
およびsystem:serviceaccount:kube-system:namespace-controller
ユーザーは、登録されているすべての API で削除するリソースを検索するため、結果に表示される場合があります。system:kube-controller-manager
およびsystem:cluster-policy-controller
ユーザーは、各種ポリシーを適用しながらすべてのリソースを確認するため、結果に表示される場合があります。- OpenShift GitOps がクラスターにインストールされている場合は
system:serviceaccount:openshift-gitops:openshift-gitops-argocd-application-controller
ユーザー (追加情報は KCS 6635361 を参照)。- OpenShift Pipelines がクラスターにインストールされている場合は
openshift-pipelines-operator
userAgent
(追加情報は KCS 6821411 を参照)。- OSD および ROSA クラスターの場合、または Velero がクラスターにインストールされている場合は
system:serviceaccount:openshift-velero:velero
およびsystem:serviceaccount:openshift-oadp:velero
ユーザー (追加情報は KCS 6351332 を参照)。- 4.10 で
system:serviceaccount:openshift-ovn-kubernetes:ovn-kubernetes-controller
がendpointslices.v1beta1.discovery.k8s.io
を使用中と表示される場合がありますが、この API は 4.12 で削除されています。4.11 では OVN-Kubernetes が v1 endpointslices API に切り替わり、4.10 から 4.12 への EUS アップグレードではコントロールプレーンが 4.11 をトラバースする必要があるため、問題ありません。- 4.10 で
system:serviceaccount:openshift-network-operator
がpoddisruptionbudgets.v1beta1.policy
を使用中と表示される場合がありますが、この API は 4.12 で削除されています。4.11 では cluster-network-operator が v1 poddisruptionbudgets API に切り替わり、4.10 から 4.12 への EUS アップグレードではコントロールプレーンが 4.11 をトラバースする必要があるため、問題ありません。system:serviceaccount:openshift-monitoring:kube-state-metrics
がntalpodautoscalers.v2beta2.autoscaling
を使用中と表示される場合があります。OCPBUGS-4112 の解決策に従い、すべての 4.12 バージョンは v2 API に切り替わるため、これは無視しても問題ありません。- 4.12 にアップグレードしようとすると、
system:serviceaccount:prod-rhsso:rhsso-operator
がpoddisruptionbudgets.v1beta1.policy
を使用中と表示される場合があります。RHSSO が最新バージョンであれば、Red Hat Single Sign-On (RH SSO) Operator is using deprecated 'poddisruptionbudgets.v1beta1.policy' API で説明されているように、これは無視しても問題ありません。
Comments