-v 是干什么的
kubectl 的 -v(--v)控制客户端日志的详细级别,级别越高输出越接近底层。级别 6 开始打印发出的 HTTP 请求,级别 8 会包含请求与响应头等更完整的内容,级别 9 涉及缓存相关细节。它解决的是「命令执行了但不知道请求长什么样」的问题:认证失败、权限被拒、超时、服务端返回异常码,都能从请求与响应里看到原文。
级别对照
| 级别 | 输出内容 | 适用场景 |
|---|---|---|
| 6 | 发出的 HTTP 请求方法与路径 | 日常排障起点,确认请求打到了哪个地址 |
| 7 | 请求内容更详细 | 需要看请求体的场景 |
| 8 | 含请求与响应头 | 排查认证、鉴权、返回码类问题,注意可能包含凭据 |
| 9 | 更底层的缓存与内部细节 | 深入定位客户端行为时使用 |
| --request-timeout | 与 -v 搭配限制等待时间 | 确认是超时还是立刻失败 |
典型使用场景
- 认证与授权:确认请求是否带上预期身份,服务端返回的是 401 还是 403
- 地址错误:确认请求实际发往哪个 server 地址,排除 context 指错
- 超时定位:配合 request-timeout 判断是网络慢还是服务端无响应
- 自动化调试:脚本里命令行为异常时打开日志看真实请求
- 对比预期:核对命令实际请求的资源路径与动词是否与预期一致
常用命令
常用命令
kubectl get pods -v=6 # 显示发出的 HTTP 请求
kubectl get pods -v=8 2>&1 | grep -i -E 'status|authorization' # 看返回码与认证头
kubectl get pods --request-timeout=10s -v=6 # 限定超时,区分慢与不通
kubectl apply -f deploy.yaml -v=8 2>&1 | grep -i 'status' # 定位服务端返回状态
kubectl get pods -v=6 --kubeconfig=/tmp/test.kubeconfig # 指定配置文件排查身份问题日志里看什么
| 片段 | 含义 | 指向 |
|---|---|---|
| GET/POST 与方法与路径 | 实际请求 | 确认资源路径与动词是否符合预期 |
| server 地址 | 请求目标 | 与 kubeconfig 中的地址核对 |
| 响应状态码 | 服务端判定 | 401 认证、403 授权、404 资源不存在 |
| 超时或连接错误 | 网络与可达性 | 配合 request-timeout 判断 |
| 代理相关输出 | 是否走了代理环境变量 | 企业网络中常见,导致请求绕路 |
级别 8 以上可能打印包含令牌、证书或请求体的内容。粘贴到工单、聊天或公开平台前必须脱敏,必要时只截取状态码与路径片段。
-v 输出的是 kubectl 客户端视角。请求成功发出但集群侧行为异常时,还要看 apiserver、控制器与 kubelet 的日志,客户端日志只能证明「请求已经按这个样子发出去了」。