【问题标题】:List Kubernetes resources by apiVersion按 apiVersion 列出 Kubernetes 资源
【发布时间】:2020-08-23 01:56:59
【问题描述】:

是否有一种简单的方法可以列出与 API 版本相关的所有 kubernetes 对象? 可以说,API 版本 apps/v1beta1 正在被弃用,我想知道我的集群中是否有任何使用此版本的对象,如何找到这些对象?

【问题讨论】:

    标签: kubernetes kube-apiserver


    【解决方案1】:

    你可以做类似的事情

    kubectl get pod -o=custom-columns=NAME:.metadata.name,API-version:.metadata.owner_references[].api_version
    

    使用 kubectl 只打印相应的数据和api version

    【讨论】:

    • 不,我不是真的在寻找 pod,而是在寻找任何对象,例如,apiVersion 字段中可能有多个版本的部署,例如 apps/v1beta1apps/v1beta2 所以查询也应该捕获其他对象类型,而不仅仅是 pod。
    • 是的,但是您可以使用 kubectl 命令并根据需要过滤 json 响应。您可以使用部署代替 pod。但是,如果您正在寻找一种搜索方法,您可以使用 Kubernetes api 并编写自定义代码来检查集群中的每个对象。
    • 是的,看起来就是这样,目前没有任何方法可以让我与 etcd 对话并查找我的集群上存在多少特定 APIVersion 的对象。
    【解决方案2】:

    我问这个问题的原因是我正在将我的 kubernetes 集群从 v1.15 升级到 v1.16,这带来了很多 breaking changes

    kubepug tool 让我可以轻松找到我需要更改才能从 1.15 无缝升级到 1.16 的资源列表

    【讨论】:

      【解决方案3】:

      要列出 Kubernetes 资源版本,请使用以下命令:

      kubectl api-resources
      

      如果您知道要搜索的资源,那么只需使用 grep 从列表中过滤它:

      kubectl api-resources | grep the_resource_name_you_want
      

      在下面的示例中,我们搜索 'persistentvolumes' 资源的 api 版本:

      kubectl api-resources | grep persistentvolumes
      

      结果:

      deployments     deploy    apps/v1     true         Deployment
      

      还有其他选项可以获取资源版本:

      使用官方文档:

      官方和最新版本在Kubernetes API documentation

      左侧导航栏列出资源,点击一个&版本为页面第一行。

      【讨论】:

        猜你喜欢
        • 2021-06-19
        • 2021-08-16
        • 2018-08-27
        • 2018-07-09
        • 1970-01-01
        • 2020-10-16
        • 2021-10-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多