-o wide 是什么
-o wide 是 kubectl get 的一种输出格式,在默认列的基础上追加若干定位字段:Pod 会多出 IP 与所在节点,节点会多出内部地址、操作系统镜像、内核版本与容器运行时,服务会多出选择器。它不改变查询范围,只改变展示的信息量,是列表类排查里性价比最高的一次调整。
为什么这几列重要
默认列只能告诉你对象状态,看不出「落在哪里」。而多数故障判断都依赖落点:同一节点上的 Pod 集体异常说明是节点或网络问题,分布在不同节点的同类 Pod 同时异常说明是配置或依赖问题。宽格式把地址与节点一次性摆出来,省掉一轮逐个查询。
基本信息
| 适用环境 | 任何 Kubernetes 发行版,几乎所有可列表的资源都支持 |
|---|---|
| 语法 | kubectl get <资源> -o wide |
| 补充列 | 按资源类型不同而不同,Pod 是地址与节点 |
| 常用组合 | 配合 -A 看全集群、配合 --sort-by 按字段排序 |
| 与 jsonpath 的区别 | 宽格式是固定追加列,取任意字段要用 jsonpath 或自定义列 |
| 输出特点 | 列宽固定,终端过窄时会被截断 |
典型使用场景
- 判断故障范围:看异常 Pod 是否集中在同一台节点上
- 核对调度结果:确认 Pod 是否按预期落到了指定节点池
- 服务排查:查看服务的虚拟地址与选择器,核对是否选中了预期 Pod
- 容量巡检:查看节点列表确认没有长时间未就绪的机器
- 容器运行时核对:确认节点运行时类型与版本,排查运行时相关异常
- 网络排查:获取 Pod 地址后直接在集群内做连通性测试
- 切换场景验证:调整调度约束后确认新副本确实换到了目标节点
常用示例
常用示例
kubectl get pods -o wide # Pod 地址与所在节点
kubectl get nodes -o wide # 节点内部地址与运行时
kubectl get svc -o wide # 服务的虚拟地址与选择器
kubectl get pods -A -o wide --sort-by=.spec.nodeName # 按节点分组看分布
kubectl get pods -o wide --field-selector spec.nodeName=node-1 # 只看某节点的 Pod
kubectl get deploy -o wide # 副本情况与镜像
kubectl get pvc -o wide # 看卷绑定的存储类Pod 宽格式列读法
| 列 | 含义 | 怎么用 |
|---|---|---|
| IP | Pod 在集群网络里的地址 | 集群内连通性测试的目标 |
| NODE | 当前调度到的节点 | 多 Pod 落点相同要警惕单点风险 |
| READY | 就绪容器数比总数 | 出现分母不为零而分子为零时重点排查 |
| STATUS | 当前状态 | 异常状态优先下钻 |
| RESTARTS | 重启次数 | 同一节点上多处增长指向节点问题 |
节点与其他资源
| 资源类型 | 补充列 | 用途 |
|---|---|---|
| 节点 | 内部地址、系统镜像、内核版本、容器运行时 | 核对环境一致性与运行时版本 |
| 服务 | 选择器 | 确认后端 Pod 的匹配规则 |
| 工作负载 | 镜像与选择器 | 发布后核对版本是否已经切换 |
| 存储卷声明 | 存储类与容量 | 确认实际绑定的存储类型 |
与其他格式的取舍
- 日常查看与排查用宽格式,信息量与可读性平衡最好
- 需要固定脚本消费时用 -o name 或自定义列,避免列顺序变化导致解析失败
- 需要完整字段与深层结构时回到 yaml 或 json 输出
节点列显示的是当前调度结果,Pod 重启不会改变它;要迁移节点必须重新调度,也就是重建 Pod 或触发滚动更新。
不同资源的补充列不同,记住三种就够用:Pod 看地址与节点,节点看地址与运行时,服务看选择器。
输出列宽固定,终端较窄时右侧列会被截断,建议改用管道交给分页工具,或把结果重定向到文件再查看。