如何用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
相关产品推荐
相关产品推荐

