在本地通过 Docker 启动 Kubernetes(K8s)集群后(比如使用 KindMinikubek3d 等工具),可以通过 Kubernetes 的 REST API 查询集群的各种资源和参数。

一、Kubernetes API 基础

Kubernetes 提供了完整的 RESTful API,用于管理集群中的所有资源(Pods、Deployments、Services、Nodes 等)。

  • 默认 API 地址:https://<master-ip>:6443
  • API 文档路径(OpenAPI):/openapi/v2
  • 核心 API 路径:/api/v1(核心资源如 Pod、Service)
  • 扩展 API 路径:/apis/apps/v1(如 Deployment)、/apis/batch/v1(Job)等

二、认证方式(是否有密码?)

Kubernetes 不使用传统用户名/密码,而是通过以下方式认证:

1. kubeconfig 文件(推荐)

当你使用 Minikube / Kind / k3d 启动本地集群时,会自动生成 ~/.kube/config 文件,其中包含:

  • 集群地址(server)
  • 客户端证书(client-certificate-data)
  • 客户端私钥(client-key-data)
  • 或者 token(如果是 Bearer Token 认证)

✅ 这个文件就是你访问 API 的“凭证”,相当于“密码”。

2. ServiceAccount Token(适用于 Pod 内部调用)

如果你在 Pod 中调用 API,K8s 会自动挂载一个 ServiceAccount Token 到 /var/run/secrets/kubernetes.io/serviceaccount/token


三、如何通过 API 查询集群信息(实操示例)

方法 1:使用 kubectl proxy(最简单,无需处理证书)

# 启动本地代理(默认监听 8001 端口)
kubectl proxy --port=8001

然后通过 http://localhost:8001 访问 API,无需认证(proxy 会自动处理):

# 获取所有命名空间
curl http://localhost:8001/api/v1/namespaces

# 获取 default 命名空间下的所有 Pods
curl http://localhost:8001/api/v1/namespaces/default/pods

# 获取所有 Deployments
curl http://localhost:8001/apis/apps/v1/deployments

# 获取节点信息
curl http://localhost:8001/api/v
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐