kubectl top - Kubernetes 资源监控命令
kubectl top 是 Kubernetes 中用于实时监控节点和 Pod 资源使用情况的命令,能够快速显示 CPU 和内存的消耗量,是日常性能监控和故障排查的重要工具。
基本语法
bash
kubectl top <RESOURCE_TYPE> [NAME] [options]资源类型
| 资源类型 | 描述 | 示例 |
|---|---|---|
node | 查看节点资源使用 | kubectl top node |
pod | 查看 Pod 资源使用 | kubectl top pod |
常用选项
| 选项 | 描述 | 示例 |
|---|---|---|
-A, --all-namespaces | 查看所有命名空间 | kubectl top pod -A |
-n, --namespace | 指定命名空间 | kubectl top pod -n kube-system |
-l, --selector | 按标签筛选 | kubectl top pod -l app=nginx |
--sort-by | 按指定字段排序 | kubectl top node --sort-by=cpu |
--containers | 显示容器级资源使用 | kubectl top pod --containers |
--no-headers | 不显示表头 | kubectl top pod --no-headers |
典型输出示例
bash
# 节点资源使用
$ kubectl top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
node1 120m 6% 1456Mi 38%
node2 85m 4% 1024Mi 27%
# Pod资源使用
$ kubectl top pod -n default
NAME CPU(cores) MEMORY(bytes)
nginx-7c8f9d59f-abcde 5m 32Mi
my-app-66b6c48dd5-xyz 22m 128Mi使用前提
- Metrics Server:必须安装并运行 Metrics Server 组件bash
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml - RBAC 权限:确保有足够的权限访问 metrics.k8s.io API
进阶用法
资源排序:
bash# 按CPU使用率排序节点 kubectl top node --sort-by=cpu # 按内存使用量排序Pod kubectl top pod -A --sort-by=memory容器级监控:
bash# 查看Pod内各容器的资源使用 kubectl top pod nginx --containers结合标签选择器:
bash# 只监控特定标签的Pod kubectl top pod -l app=nginx脚本处理:
bash# 去除表头便于脚本处理 kubectl top node --no-headers
注意事项
- 数据延迟:指标数据有1-2分钟延迟
- 数值解读:
- CPU单位:100m = 0.1核
- 内存单位:Mi = Mebibyte (1024 KiB)
- 系统组件:节点资源使用包含系统组件消耗
- 历史数据:仅显示实时数据,不保存历史记录
常见问题排查
Metrics Server 未安装:
bashkubectl get apiservices | grep metrics kubectl -n kube-system logs -l k8s-app=metrics-server权限不足:
bashkubectl auth can-i get nodes --subresource=metrics节点指标缺失:
bashkubectl describe node <NODE_NAME> | grep -i conditions -A10
kubectl top 是 Kubernetes 集群监控的基础工具,结合其他监控系统(如 Prometheus)可以构建完整的监控体系。
