1. 数据性质不同
-
kubectl describe node
(Non-terminated Pods部分)显示的是Pod的 资源配置声明(Requests/Limits) ,即用户在YAML中定义的资源申请量和上限值。
示例:
Non-terminated Pods: Namespace Pod名 CPU Requests CPU Limits Memory Requests Memory Limits lmzf ack-onepilot-pod 500m (50%) 1 (100%) 256Mi (10%) 512Mi (20%)
本质:描述的是Pod的资源配置要求,而非实际使用情况。
-
kubectl top pod
显示的是Pod 当前实际的资源消耗量(CPU核心数、内存字节数),数据来源于Metrics Server对节点cAdvisor的实时采集。
示例:
POD名 CPU(cores) MEMORY(bytes) ack-onepilot-pod 350m 180Mi
++本质 :反映的是Pod运行时的真实资源占用*。*++
2. 内存指标的特殊性(需重点关注)
-
kubectl top pod
的内存指标 默认采用内存工作集(Working Set)
:- 包含 驻留内存(RSS) + 缓存(Cache),反映的是操作系统视角下Pod占用的总有效内存。
- 这是Kubernetes判断OOM Killer触发条件的依据。
-
其他内存指标对比:
内存RSS(Resident Set Size)
:仅包含驻留物理内存(更接近应用"真实"占用),但不被用于OOM判定。- 当内存压力大时,系统可能将部分内存交换到磁盘(Swap),但Kubernetes默认要求禁用Swap。
3. 使用场景区分
-
诊断资源配置合理性 :
对比
describe node
的Requests/Limits
与top pod
的实际用量:- 若实际用量持续接近
Limits
,需调高资源配置上限; - 若实际用量远低于
Requests
,可考虑降低配置以减少资源浪费。
- 若实际用量持续接近
-
监控实时负载与异常 :
kubectl top pod
用于实时追踪资源消耗峰值,排查CPU飙升、内存泄漏等问题。
kubectl describe node
用于确认资源分配是否超售(如节点Allocatable资源耗尽导致Pod无法调度)。
4. 总结差异表
特性 | kubectl describe node (Non-terminated Pods) |
kubectl top pod |
---|---|---|
数据来源 | Pod的YAML资源配置声明 | 实时Metrics Server监控数据 |
指标类型 | 静态配置(Requests/Limits) | 动态消耗(CPU/内存实际用量) |
内存指标意义 | 申请的内存配额上限 | 工作集(含缓存,用于OOM判断) |
核心用途 | 检查资源分配、调度瓶颈 | 监控运行时负载、性能调优 |
操作建议 :日常监控应结合两者。通过
top pod
观察实时负载波动,通过describe node
验证资源分配是否符合预期,避免节点资源过载。若内存消耗接近Limit且工作集持续增长,需警惕OOM风险。