5.2. Évaluation de votre cluster pour les API supprimées
Il existe plusieurs méthodes pour aider les administrateurs à identifier où les API qui seront supprimées sont utilisées. Cependant, OpenShift Container Platform ne peut pas identifier toutes les instances, en particulier les charges de travail qui sont inactives ou les outils externes qui sont utilisés. Il est de la responsabilité de l'administrateur d'évaluer correctement toutes les charges de travail et autres intégrations pour les instances d'API supprimées.
5.2.1. Examen des alertes pour identifier les utilisations d'API supprimées
Deux alertes sont déclenchées lorsqu'une API est utilisée et seront supprimées dans la prochaine version :
-
APIRemovedInNextReleaseInUse
- pour les API qui seront supprimées dans la prochaine version d'OpenShift Container Platform. -
APIRemovedInNextEUSReleaseInUse
- pour les API qui seront supprimées dans la prochaine version d'OpenShift Container Platform Extended Update Support (EUS).
Si l'une de ces alertes se déclenche dans votre cluster, examinez les alertes et prenez des mesures pour les supprimer en migrant les manifestes et les clients API afin d'utiliser la nouvelle version de l'API.
Utilisez l'API APIRequestCount
pour obtenir davantage d'informations sur les API utilisées et les charges de travail qui utilisent les API supprimées, car les alertes ne fournissent pas ces informations. En outre, certaines API peuvent ne pas déclencher ces alertes, mais sont tout de même capturées par APIRequestCount
. Les alertes sont réglées pour être moins sensibles afin d'éviter la fatigue des alertes dans les systèmes de production.
5.2.2. Utiliser APIRequestCount pour identifier les utilisations d'API supprimées
Vous pouvez utiliser l'API APIRequestCount
pour suivre les demandes d'API et vérifier si l'une d'entre elles utilise l'une des API supprimées.
Conditions préalables
-
Vous devez avoir accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
.
Procédure
Exécutez la commande suivante et examinez la colonne
REMOVEDINRELEASE
du résultat pour identifier les API supprimées qui sont actuellement utilisées :oc get apirequestcounts
$ oc get apirequestcounts
Copy to Clipboard Copied! Exemple de sortie
NAME REMOVEDINRELEASE REQUESTSINCURRENTHOUR REQUESTSINLAST24H ... poddisruptionbudgets.v1.policy 391 8114 poddisruptionbudgets.v1beta1.policy 1.25 2 23 podmonitors.v1.monitoring.coreos.com 3 70 podnetworkconnectivitychecks.v1alpha1.controlplane.operator.openshift.io 612 11748 pods.v1 1531 38634 podsecuritypolicies.v1beta1.policy 1.25 3 39 podtemplates.v1 2 79 preprovisioningimages.v1alpha1.metal3.io 2 39 priorityclasses.v1.scheduling.k8s.io 12 248 prioritylevelconfigurations.v1beta1.flowcontrol.apiserver.k8s.io 1.26 3 86 ...
NAME REMOVEDINRELEASE REQUESTSINCURRENTHOUR REQUESTSINLAST24H ... poddisruptionbudgets.v1.policy 391 8114 poddisruptionbudgets.v1beta1.policy 1.25 2 23 podmonitors.v1.monitoring.coreos.com 3 70 podnetworkconnectivitychecks.v1alpha1.controlplane.operator.openshift.io 612 11748 pods.v1 1531 38634 podsecuritypolicies.v1beta1.policy 1.25 3 39 podtemplates.v1 2 79 preprovisioningimages.v1alpha1.metal3.io 2 39 priorityclasses.v1.scheduling.k8s.io 12 248 prioritylevelconfigurations.v1beta1.flowcontrol.apiserver.k8s.io 1.26 3 86 ...
Copy to Clipboard Copied! ImportantVous pouvez ignorer les entrées suivantes qui apparaissent dans les résultats :
-
Les utilisateurs
system:serviceaccount:kube-system:generic-garbage-collector
etsystem:serviceaccount:kube-system:namespace-controller
peuvent apparaître dans les résultats car ces services invoquent toutes les API enregistrées lorsqu'ils recherchent des ressources à supprimer. -
Les utilisateurs
system:kube-controller-manager
etsystem:cluster-policy-controller
peuvent apparaître dans les résultats parce qu'ils parcourent toutes les ressources tout en appliquant diverses politiques.
Vous pouvez également utiliser
-o jsonpath
pour filtrer les résultats :oc get apirequestcounts -o jsonpath='{range .items[ ?(@.status.removedInRelease!="\N")]}{.status.removedInRelease}{\N-"\N-"\N"}{\N-"\N"\N"\N"}{\N-"\N"\N"\N"\N"\N"\N"\N"\N"\N"\N"\N"\N "end}
$ oc get apirequestcounts -o jsonpath='{range .items[ ?(@.status.removedInRelease!="\N")]}{.status.removedInRelease}{\N-"\N-"\N"}{\N-"\N"\N"\N"}{\N-"\N"\N"\N"\N"\N"\N"\N"\N"\N"\N"\N"\N "end}
Copy to Clipboard Copied! Exemple de sortie
1.26 flowschemas.v1beta1.flowcontrol.apiserver.k8s.io 1.26 horizontalpodautoscalers.v2beta2.autoscaling 1.25 poddisruptionbudgets.v1beta1.policy 1.25 podsecuritypolicies.v1beta1.policy 1.26 prioritylevelconfigurations.v1beta1.flowcontrol.apiserver.k8s.io
1.26 flowschemas.v1beta1.flowcontrol.apiserver.k8s.io 1.26 horizontalpodautoscalers.v2beta2.autoscaling 1.25 poddisruptionbudgets.v1beta1.policy 1.25 podsecuritypolicies.v1beta1.policy 1.26 prioritylevelconfigurations.v1beta1.flowcontrol.apiserver.k8s.io
Copy to Clipboard Copied! -
Les utilisateurs
5.2.3. Utiliser APIRequestCount pour identifier les charges de travail qui utilisent les API supprimées
Vous pouvez examiner la ressource APIRequestCount
pour une version donnée de l'API afin d'identifier les charges de travail qui utilisent l'API.
Conditions préalables
-
Vous devez avoir accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
.
Procédure
Exécutez la commande suivante et examinez les champs
username
etuserAgent
pour identifier les charges de travail qui utilisent l'API :oc get apirequestcounts <resource>.<version>.<group> -o yaml
$ oc get apirequestcounts <resource>.<version>.<group> -o yaml
Copy to Clipboard Copied! Par exemple :
oc get apirequestcounts poddisruptionbudgets.v1beta1.policy -o yaml
$ oc get apirequestcounts poddisruptionbudgets.v1beta1.policy -o yaml
Copy to Clipboard Copied! Vous pouvez également utiliser
-o jsonpath
pour extraire les valeursusername
etuserAgent
d'une ressourceAPIRequestCount
:oc get apirequestcounts poddisruptionbudgets.v1beta1.policy \ -o jsonpath='{range .status.currentHour..byUser[*]}{..byVerb[*].verb}{","}{.username}{","}{.userAgent}{"\n"}{end}' \ | sort -k 2 -t, -u | column -t -s, -NVERBS,USERNAME,USERAGENT
$ oc get apirequestcounts poddisruptionbudgets.v1beta1.policy \ -o jsonpath='{range .status.currentHour..byUser[*]}{..byVerb[*].verb}{","}{.username}{","}{.userAgent}{"\n"}{end}' \ | sort -k 2 -t, -u | column -t -s, -NVERBS,USERNAME,USERAGENT
Copy to Clipboard Copied! Exemple de sortie
VERBS USERNAME USERAGENT watch system:serviceaccount:openshift-operators:3scale-operator manager/v0.0.0 watch system:serviceaccount:openshift-operators:datadog-operator-controller-manager manager/v0.0.0
VERBS USERNAME USERAGENT watch system:serviceaccount:openshift-operators:3scale-operator manager/v0.0.0 watch system:serviceaccount:openshift-operators:datadog-operator-controller-manager manager/v0.0.0
Copy to Clipboard Copied!