You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Kubernetes Client实现kubectl api-resources --namespaced=false功能?

如何用Python Kubernetes Client列出集群级API资源

你可以通过ApisApi的get_api_groups和get_api_resources方法组合实现需求——虽然get_api_resources需要传入具体的group_version参数,但遍历所有API组和版本就能获取完整资源列表,过滤出namespaced=false的条目就是集群级资源。

具体代码示例:

from kubernetes import client, config

# 加载Kubernetes配置(本地开发用load_kube_config,集群内运行用load_incluster_config)
config.load_kube_config()

# 初始化ApisApi实例
apis_api = client.ApisApi()

# 获取所有API组信息
api_groups = apis_api.get_api_groups()

cluster_scoped_resources = []

# 遍历每个API组
for group in api_groups.groups:
    # 遍历组内的每个版本
    for version in group.versions:
        # 获取该版本下的所有资源
        api_resources = apis_api.get_api_resources(group_version=version.group_version)
        # 过滤出非命名空间级(集群级)的资源
        for resource in api_resources.resources:
            if not resource.namespaced:
                cluster_scoped_resources.append({
                    "resource_name": resource.name,
                    "api_group": group.name,
                    "api_version": version.version,
                    "resource_kind": resource.kind
                })

# 输出结果
for res in cluster_scoped_resources:
    print(f"{res['resource_name']} | {res['api_group']}/{res['api_version']} | {res['resource_kind']}")

关键说明:

  • get_api_groups会返回集群中所有注册的API组及其版本信息
  • 每个API版本需要单独调用get_api_resources并传入对应的group_version(比如apps/v1)来获取该版本下的资源列表
  • 资源对象的namespaced字段为False时,就是你要找的集群范围资源,和kubectl api-resources --namespaced=false的结果完全一致

内容的提问来源于stack exchange,提问作者0xREDACTED

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 23:15:09