Skip to content

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

使用前提

  1. Metrics Server:必须安装并运行 Metrics Server 组件
    bash
    kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
  2. RBAC 权限:确保有足够的权限访问 metrics.k8s.io API

进阶用法

  1. 资源排序

    bash
    # 按CPU使用率排序节点
    kubectl top node --sort-by=cpu
    
    # 按内存使用量排序Pod
    kubectl top pod -A --sort-by=memory
  2. 容器级监控

    bash
    # 查看Pod内各容器的资源使用
    kubectl top pod nginx --containers
  3. 结合标签选择器

    bash
    # 只监控特定标签的Pod
    kubectl top pod -l app=nginx
  4. 脚本处理

    bash
    # 去除表头便于脚本处理
    kubectl top node --no-headers

注意事项

  1. 数据延迟:指标数据有1-2分钟延迟
  2. 数值解读
    • CPU单位:100m = 0.1核
    • 内存单位:Mi = Mebibyte (1024 KiB)
  3. 系统组件:节点资源使用包含系统组件消耗
  4. 历史数据:仅显示实时数据,不保存历史记录

常见问题排查

  1. Metrics Server 未安装

    bash
    kubectl get apiservices | grep metrics
    kubectl -n kube-system logs -l k8s-app=metrics-server
  2. 权限不足

    bash
    kubectl auth can-i get nodes --subresource=metrics
  3. 节点指标缺失

    bash
    kubectl describe node <NODE_NAME> | grep -i conditions -A10

kubectl top 是 Kubernetes 集群监控的基础工具,结合其他监控系统(如 Prometheus)可以构建完整的监控体系。