首页/云/Kubernetes 速查/kubectl describe 查看资源详情与事件
kubectl 基础56 条

kubectl describe 查看资源详情与事件

展示资源的完整状态:副本数、容器状态、探针、挂载、条件(Conditions),末尾 Events 是排障的起点。

Kubernetes 速查云更新于 2026-10-13

kubectl describe 是什么

kubectl describe 把一个资源的完整状态展开成人可读的多段文本:对象定义、当前 status、Conditions 条件、各容器状态与探针配置、卷与挂载、所在节点与资源请求,末尾还按时间附上关联事件。它比 get 的摘要列详细,也比 -o yaml 更贴合排查视角,是回答「为什么调度不上、为什么没就绪」的主要入口。

为什么不能替代日志

describe 的内容全部来自对象自身的状态字段与事件,它不包含容器进程写的任何输出。事件里的 BackOff 只能告诉你容器在反复重启,不会告诉你为什么重启。因此标准动作是 describe 定范围,再顺着结论去 logs 或 -o yaml 取细节。

基本信息

适用环境任何 Kubernetes 发行版,主流资源类型都支持
语法kubectl describe <资源类型> <名称> [-n 命名空间]
输出内容对象定义、运行状态、条件、探针、事件列表
事件范围只含当前命名空间内与该对象相关的事件
与 yaml 的区别describe 是给人读的聚合视图,yaml 是原始对象结构
权限要求对目标资源具备 get 权限

典型使用场景

  • Pod 卡在 Pending:看 Conditions 说明与 FailedScheduling 事件里的具体约束
  • 容器反复重启:看 State 与 Last State 的退出码与原因,确认是内存不足还是探针杀进程
  • 服务不通:查 Service 的选择器与端点段,确认后端列表是否为空
  • 卷挂载失败:看卷小节里的定义与挂载两段,区分是对象缺失还是挂载超时
  • 节点写入受阻:查看节点的污点、条件与已分配资源,判断是否已被占满
  • 存储异常:查看 PVC 绑定的 PV 与状态是否停在 Pending
  • 发布卡住:查看 Deployment 的条件与事件,找到是配额、探针还是镜像拉取的问题

常用示例

常用示例
kubectl describe pod web-7d9c8b6f5c-abcde -n prod   # Pod 全貌,排障第一站
kubectl describe pod web-x | sed -n '/Events:/,$p'    # 只截取末尾事件段
kubectl describe node node-1 | grep -A6 Conditions    # 节点健康条件
kubectl describe svc web | grep -A8 Endpoints         # 后端端点列表
kubectl describe pvc data-db-0 -n prod                # 存储绑定是否完成
kubectl describe deploy web -n prod | head -40        # 发布相关条件与策略

Events 常见原因

原因指向的问题
FailedScheduling没有节点满足资源、标签、亲和、污点或卷约束
FailedMount挂载失败,常见于 Secret、ConfigMap 或 PV 不可用
FailedAttachVolume云盘或 CSI 卷附加未完成、跨节点冲突
BackOff容器反复重启,kubelet 按退避节奏再拉,计数增长说明持续失败
Unhealthy探针失败,文本里会写明是存活探针还是就绪探针
FailedCreate控制器创建下级对象失败,如配额不足或被准入策略拦截
Killing 与 Preempting资源紧张触发的终止或抢占,说明节点容量已经不够

读输出的小技巧

  • Conditions 里的 LastTransitionTime 能定位问题开始时间,与发布时间线对齐
  • 容器状态分 Current 与 Last 两段,Last State 才是上一次失败的原因
  • 节点输出里的已分配资源段汇总了各 Pod 的请求值,判断是否会调度失败看这里
describe 不显示容器的标准输出与标准错误,日志要用 kubectl logs,容器已重启时加 --previous 读取上一个实例。
事件默认只保留一段时间(常见约一小时),重要故障要尽快取;事件属于命名空间,排查前先确认 -n 是否正确。

和相邻命令的取舍

  • 现象级判断用 get:对象在不在、状态是什么、重启过几次
  • 原因级判断用 describe:条件、事件、探针、卷、节点约束
  • 应用级判断用 logs:进程自己报了什么错,上一个实例是怎么退出的

易错点

  • 把 describe 当万能使:容器崩溃原因与应用报错必须看 logs,事件里的 BackOff 只说明在重启
  • 排查时忘了加 -n:会提示找不到资源,或看到另一个同名对象而得出错误结论
  • 只读 Conditions 不看 Events:条件只是汇总结论,事件里才有具体约束与阈值数字
  • 错过事件保留窗口:过夜后再看,Pod 相关事件已被清理,只能依赖日志与监控留存
  • 对节点做 describe 后忽略已分配资源段:机器总容量不等于可调度容量,系统组件预留会让可用量明显更小
  • 输出很长时直接翻页淹没重点:用 sed 或 grep 只截取事件段、Conditions 段,能显著缩短定位时间

数据来源与参考

  • Kubernetes 官方文档 · kubectl describe
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌