要查看 Kubernetes 集群中各个 Pod 占用的资源大小(包括 CPU 和内存),可以使用以下几种方法:
1. 使用 kubectl top
命令
kubectl top
命令可以快速查看当前 Pod 的 CPU 和内存使用情况。需要确保已安装并配置了 Metrics Server。
查看所有 Pod 的资源使用情况
kubectl top pods --all-namespaces
示例输出
NAMESPACE NAME CPU(cores) MEMORY(bytes)
default my-app-1 500m 128Mi
default my-app-2 300m 256Mi
kube-system kube-dns 100m 64Mi
说明
-
CPU(cores)
: 显示 Pod 当前使用的 CPU 核心数。 -
MEMORY(bytes)
: 显示 Pod 当前使用的内存量。
2. 使用 kubectl describe
命令
kubectl describe
命令可用于查看特定 Pod 的详细信息,包括资源请求和限制。
查看特定 Pod 的详细信息
kubectl describe pod <pod-name> -n <namespace>
示例输出
Name: my-app-1
Namespace: default
Priority: 0
Node: node-1/192.168.1.1
Start Time: Mon, 01 Nov 2023 10:00:00 +0000
Labels: app=my-app
Annotations: <none>
Status: Running
IP: 10.244.1.2
Containers:
app-container:
Container ID: docker://abcdef123456
Image: my-app-image:latest
Image ID: docker-pullable://my-app-image@sha256:...
Port: 8080/TCP
Host Port: 0/TCP
State: Running
Started: Mon, 01 Nov 2023 10:00:01 +0000
Ready: True
Restart Count: 0
Limits:
cpu: 1
memory: 1Gi
Requests:
cpu: 500m
memory: 256Mi
说明
-
Limits
和Requests
: 表示 Pod 对 CPU 和内存的请求和限制。虽然这并不显示实际使用情况,但可以帮助理解 Pod 的资源配置。
3. 使用 Prometheus 和 Grafana
如果您已经配置了 Prometheus 和 Grafana,可以在 Grafana 中查看 Pod 的资源使用情况,并创建可视化仪表板。
在 Grafana 中查看
- 登录 Grafana。
- 创建一个新的仪表板或查看现有的仪表板。
- 使用 Prometheus 查询,查看 Pod 的 CPU 和内存使用情况。
示例 Prometheus 查询
-
查询所有 Pod 的 CPU 使用情况:
sum(rate(container_cpu_usage_seconds_total{container_name!="POD"}[5m])) by (pod_name)
-
查询所有 Pod 的内存使用情况:
sum(container_memory_usage_bytes{container_name!="POD"}) by (pod_name)
4. 使用 Kube Metrics API
您还可以直接访问 Kubernetes Metrics API(如果已启用 Metrics Server),以获取 Pod 的 CPU 和内存使用情况。
示例命令
kubectl get --raw "/apis/metrics.k8s.io/v1beta1/pods" | jq .
说明
- 这个命令将返回集群中所有 Pod 的 CPU 和内存使用情况,返回的数据格式为 JSON。
总结
通过以上方法,您可以轻松查看 Kubernetes 集群中各个 Pod 的资源使用情况,包括 CPU 和内存。如果需要更深入的监控和可视化,建议结合使用 Prometheus 和 Grafana。