proxy 在做什么
kubectl proxy 在本机监听一个端口,把收到的 HTTP 请求转发到集群 API Server,并自动附上当前 kubeconfig 的身份凭据。它省去了手拼 URL、处理证书和令牌的步骤,让 curl 与浏览器可以直接调 REST 接口。它只做转发不做提权:你的账号没有权限的资源,经代理访问同样返回 403。
基本信息
| 适用平台 | kubectl 1.20+,任意发行版集群 |
|---|---|
| 默认监听 | 127.0.0.1:8001 |
| 认证方式 | 复用当前上下文的用户凭据 |
| 权限范围 | 与当前账号完全一致,不额外放权 |
| 停止方式 | 前台 Ctrl+C,或结束后台进程 |
典型使用场景
- 用 curl 直接读 API 原始响应,查看 kubectl 精简输出里看不到的 status 与 conditions 字段
- 用浏览器浏览资源列表,或用图形化工具打开 API 端点
- 调试自定义资源:CRD 的 REST 路径不便手拼,借代理缩短路径
- 访问集群内部端点,例如节点代理路径与指标接口
- 临时给同事演示某个接口结构,只在本机开放,不涉及任何服务端改动
常用示例
常用示例
kubectl proxy --port=8001 & # 后台启动本地代理
curl -s http://127.0.0.1:8001/api/v1/namespaces/default/pods | head -c 300 # 读核心组资源
curl -s http://127.0.0.1:8001/apis/apps/v1/namespaces/prod/deployments # 具名组路径带 apis 前缀
curl -s http://127.0.0.1:8001/version # 集群版本
curl -s http://127.0.0.1:8001/api/v1/namespaces/default/pods/nginx/log # 取 Pod 日志
curl -s http://127.0.0.1:8001/healthz # 控制面自检路径与返回内容
| 路径形式 | 对应内容 | 注意点 |
|---|---|---|
| /api/v1/... | 核心 API 组资源 | Pod、Service、ConfigMap 都在此路径下 |
| /apis/<组>/<版本>/... | 具名 API 组资源 | apps、batch 必须带组名与版本号 |
| /version | 版本信息 | 排查客户端与服务端版本差异时常用 |
| /metrics | 服务端指标 | 数据量很大,建议先过滤再读取 |
代理默认只监听本机回环地址。把监听地址放开到所有网卡,等于在这台机器上开了一个免认证的集群 API 入口,任何能访问该端口的人都在借用你的权限。
用于调试的凭据权限往往高于普通运维账号,排查结束立即停止代理进程。需要长期访问时,应改用权限受限的服务账号与正式的访问入口。