5.2. 为删除的 API 评估集群


有多种方法可帮助管理员确定将使用移除的 API 的位置。但是,OpenShift Container Platform 无法识别所有实例,尤其是使用闲置或外部工具的工作负载。管理员负责针对已删除 API 实例正确评估所有工作负载和其他集成。

5.2.1. 查看警报以识别已删除 API 的使用

当使用 API 时会触发两个警报,该 API 将在以后的版本中删除:

  • APIRemovedInNextReleaseInUse - 针对将在下一个 OpenShift Container Platform 发行版本中删除的 API。
  • APIRemovedInNextEUSReleaseInUse - 针对将在下一个 OpenShift Container Platform 扩展更新支持(EUS)版本中删除的 API。

如果其中任何一个警报在集群中触发,请查看警报并采取措施通过迁移清单和 API 客户端以使用新的 API 版本来清除警报。

使用 APIRequestCount API 获取有关使用哪些 API 的更多信息,以及哪些工作负载正在使用删除的 API,因为警报不提供此信息。此外,一些 API 可能不会触发这些警报,但仍然被 APIRequestCount 捕获。将警报调优为不太敏感,以避免在生产环境中出现警报。

您可以使用 APIRequestCount API 来跟踪 API 请求,并检查它们中的任何请求是否使用其中一个已删除的 API。

先决条件

  • 您必须可以使用具有 cluster-admin 角色的用户访问集群。

流程

  • 运行以下命令并检查输出的 REMOVEDINRELEASE 列以确定当前正在使用的 API:

    $ oc get apirequestcounts
    Copy to Clipboard Toggle word wrap

    输出示例

    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 Toggle word wrap

    重要

    您可以安全地忽略结果中出现的以下条目:

    • system:serviceaccount:kube-system:generic-garbage-collectorsystem:serviceaccount:kube-system:namespace-controller 用户可能会出现在结果中,因为这些服务在搜索要删除的资源时调用所有注册的 API。
    • system:kube-controller-managersystem:cluster-policy-controller 用户可能会出现在结果中,因为它们在强制执行各种策略时遍历所有资源。

    您还可以使用 -o jsonpath 来过滤结果:

    $ oc get apirequestcounts -o jsonpath='{range .items[?(@.status.removedInRelease!="")]}{.status.removedInRelease}{"\t"}{.metadata.name}{"\n"}{end}'
    Copy to Clipboard Toggle word wrap

    输出示例

    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 Toggle word wrap

您可以检查给定 API 版本的 APIRequestCount 资源,以帮助识别正在使用 API 的工作负载。

先决条件

  • 您必须可以使用具有 cluster-admin 角色的用户访问集群。

流程

  • 运行以下命令并检查 usernameuserAgent 字段,以帮助识别使用 API 的工作负载:

    $ oc get apirequestcounts <resource>.<version>.<group> -o yaml
    Copy to Clipboard Toggle word wrap

    例如:

    $ oc get apirequestcounts poddisruptionbudgets.v1beta1.policy -o yaml
    Copy to Clipboard Toggle word wrap

    您还可以使用 -o jsonpathAPIRequestCount 资源中提取 usernameuserAgent 值:

    $ 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 Toggle word wrap

    输出示例

    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 Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat