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

不使用kubectl,如何依托.kubeconfig直接调用Kubernetes REST API

仅持.kubeconfig不用kubectl调用K8s REST API的认证方法

完全可以直接通过解析.kubeconfig的字段实现纯HTTP请求访问K8s APIServer,无需依赖kubectl,具体操作步骤如下:


前置步骤:从.kubeconfig提取必要信息

首先你需要从配置文件中提取三类核心信息:

  • K8s APIServer的访问地址(对应clusters.cluster.server字段)
  • 集群CA证书(对应clusters.cluster.certificate-authority-data字段,base64编码格式)
  • 身份认证凭据,通常分为ServiceAccount Token、客户端证书对两类,少数场景为用户名密码

场景1:Token认证方式

如果你的.kubeconfig中users.user.token字段存在值,用这种方式:

  1. 解码CA证书并存为本地文件:
grep 'certificate-authority-data:' ~/.kube/config | awk '{print $2}' | base64 -d > ca.crt
  1. 提取Token和APIServer地址:
# 提取token
K8S_TOKEN=$(grep 'token:' ~/.kube/config | awk '{print $2}')
# 提取APIServer地址
K8S_APISERVER=$(grep 'server:' ~/.kube/config | awk '{print $2}')
  1. 发送curl请求:
# 校验证书的安全请求方式
curl --cacert ./ca.crt -H "Authorization: Bearer ${K8S_TOKEN}" ${K8S_APISERVER}/api/v1/pods

# 测试场景下可跳过证书校验(不推荐生产使用)
curl -k -H "Authorization: Bearer ${K8S_TOKEN}" ${K8S_APISERVER}/api/v1/pods

场景2:客户端证书认证方式

如果你的.kubeconfig中存在client-certificate-data和client-key-data字段,用这种方式:

  1. 解码所有需要的证书文件:
# 解码CA证书
grep 'certificate-authority-data:' ~/.kube/config | awk '{print $2}' | base64 -d > ca.crt
# 解码客户端公钥
grep 'client-certificate-data:' ~/.kube/config | awk '{print $2}' | base64 -d > client.crt
# 解码客户端私钥
grep 'client-key-data:' ~/.kube/config | awk '{print $2}' | base64 -d > client.key
  1. 提取APIServer地址后发送请求:
K8S_APISERVER=$(grep 'server:' ~/.kube/config | awk '{print $2}')
curl --cacert ./ca.crt --cert ./client.crt --key ./client.key ${K8S_APISERVER}/api/v1/pods

注意事项

  • 如果你的.kubeconfig使用的是动态认证(比如OIDC、云厂商临时凭据),提取的Token或证书有效期很短,需要定期重新提取更新凭据
  • 如果你配置了多集群上下文,提取信息前需要先确认当前使用的上下文对应的集群和用户字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:24:03