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

Kubernetes中如何通过REST API列出CustomResource实例?

有没有对应的REST API来列出CustomResource实例?

当然有!Kubernetes的REST API完全支持查询自定义资源(CustomResource)的实例,和你用kubectl get <customresource_kind>执行的操作本质上是一样的——kubectl其实就是在背后调用这些REST API来完成功能的。

核心思路:找到CustomResource对应的API路径

每个CustomResource都属于特定的API组和API版本,你需要先明确这两个信息,才能构造出正确的API请求路径。

构造API请求的步骤

  1. 确定CustomResource的API组、版本和复数名称

    • 你可以通过kubectl get crd <crd-name>查看CRD的定义,比如:
      kubectl get crd foos.example.com -o yaml
      
      在输出的spec.group字段能找到API组,spec.versions里是版本,spec.names.plural是复数名称(这是API路径里要用的,比如Foo对应的复数通常是foos)。
    • 或者更简单的方式,用kubectl explain <customresource-kind>,输出开头会显示GROUP: example.com和VERSION: v1。
  2. 构造GET请求路径

    • 如果是命名空间级的CustomResource(CRD的scope是Namespaced),请求路径格式为:
      /apis/<api-group>/<api-version>/namespaces/<namespace>/<plural-name>
      
      举个例子:假设你的CustomResource是Foo,API组example.com,版本v1,要查default命名空间下的实例,路径就是:
      /apis/example.com/v1/namespaces/default/foos
      
    • 如果是集群级的CustomResource(CRD的scope是Cluster),不需要指定命名空间,路径格式为:
      /apis/<api-group>/<api-version>/<plural-name>
      
      对应例子的路径就是:
      /apis/example.com/v1/foos
      
  3. 执行GET请求
    你可以用curl、Postman等工具发送GET请求,记得带上Kubernetes API的认证信息(比如kubeconfig里的token或者客户端证书),和kubectl使用的认证方式一致。比如用curl的例子:

    curl -k -H "Authorization: Bearer $(kubectl get secret $(kubectl get serviceaccount default -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 -d)" https://<kube-api-server>/apis/example.com/v1/namespaces/default/foos
    

快速验证API路径的方法

你可以直接用kubectl get --raw命令查看API的原始响应,这能帮你确认路径是否正确:

kubectl get --raw /apis/example.com/v1/namespaces/default/foos

这个命令会返回和REST API完全一致的JSON格式响应,和kubectl get foos -o json的输出基本相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 14:02:47