跳到主要内容

podman -pod -stats - 显示一个或多个pods中容器的资源使用统计信息的实时流

语法

podman pod stats [选项][*pod*]

描述

显示一个或多个pods中容器的资源使用统计信息的实时流。请注意,在无根模式下运行仅支持cgroups v2。

选项

--all, -a

显示所有容器。默认情况下,仅显示正在运行的容器。

--format=template

以JSON格式或使用Go模板美化打印容器统计信息。

Go模板可用的有效占位符如下:

占位符描述
.BlockIO表示容器的块输入/输出(Block Input/Output)统计信息。这通常涉及到对磁盘或其他块设备的读写操作。通过此占位符,用户可以获取到容器与块设备交互的详细数据,如读写的字节数、操作次数等。
.CID容器的唯一标识符。每个容器在创建时都会被分配一个唯一的ID,通过这个ID可以准确地标识和引用该容器。
.CPU表示容器的CPU使用百分比。这个值反映了容器在当前时间段内占用的CPU资源比例。
.Mem表示容器的内存使用百分比。这个值反映了容器当前使用的内存资源占其分配或可用内存的比例。
.MemUsage表示容器的内存使用量,以人类可读的格式显示,如MB、GB等。
.MemUsageBytes表示容器的内存使用量,以原始字节数显示,按照IEC(国际电工委员会)的标准格式。
.Name容器的名称。当容器被创建时,可以为其指定一个名称,以便后续通过名称来引用或管理该容器。
.NetIO表示容器的网络输入/输出(Network Input/Output)统计信息,包括发送和接收的数据包数量、字节数等。
.PIDS表示容器内运行的进程数量。每个在容器中运行的程序或任务都会创建一个或多个进程。
.Pod容器的Pod ID。Pod是Kubernetes中的一个概念,用于将一组相关的容器组合在一起,共享相同的网络、存储等资源。

这个表格详细列出了每个占位符的描述,方便在编写脚本或命令时引用。

当使用Go模板时,请在格式前加上table以打印表头。

--latest

显示最新的pod的统计信息。请注意,此选项在某些环境(如远程Podman客户端)中可能不可用。

--no-reset

不要清除之前的统计信息,这样可以累积显示统计数据。

--no-stream

不实时流传输数据,而是只获取一次统计数据。

示例

要显示指定Pod的统计信息(实时流)

要显示指定Pod的统计信息(实时流),您通常需要使用一些专门的工具或Kubernetes的API。一个常见的选择是使用kubectl top命令,该命令可以显示Pod和节点的资源使用情况。然而,kubectl top命令并不提供实时流功能。

为了获取实时统计信息,您可以考虑以下几种方法:

1. 使用Metrics Server和kubectl top命令

确保您的Kubernetes集群中已经部署了Metrics Server。Metrics Server是一个集群范围的资源度量数据聚合器,它可以从Kubelet收集度量数据,并通过Kubernetes API提供这些数据。

然后,您可以使用kubectl top命令来查看Pod的CPU和内存使用情况:

kubectl top pod <pod-name> --namespace=<namespace>

虽然这不是实时流,但您可以定期运行此命令以获取更新的统计信息。

2. 使用Prometheus和Grafana

Prometheus是一个开源的系统监控和警报工具包,而Grafana是一个开源的数据可视化平台。您可以在Kubernetes集群中部署Prometheus和Grafana,并配置它们来收集Pod的统计信息。

通过Prometheus收集数据,并使用Grafana创建仪表板来实时显示Pod的CPU、内存、网络IO和块IO等统计信息。这样,您就可以获得一个实时流的可视化界面。

3. 使用自定义脚本和工具

您还可以编写自定义脚本或使用现有的工具(如cAdvisor)来收集Pod的统计信息,并将这些信息实时输出到控制台或文件中。这可能需要一些编程知识和对Kubernetes API的深入理解。

注意事项

  • 确保您的Kubernetes集群具有足够的权限来访问Pod的统计信息。

  • 根据您的需求选择合适的工具和方法。如果您只需要简单的统计信息,kubectl top可能足够了。如果您需要更详细和实时的数据可视化,Prometheus和Grafana可能更适合您。

  • 在生产环境中部署监控工具时,请确保它们不会对集群性能产生负面影响。

显示所有pods的统计信息(无实时流)

podman pod stats -a --no-stream
ID NAME CPU % MEM USAGE / LIMIT MEM % NET IO BLOCK IO PIDS
a9f807ffaacd frosty_hodgkin -- 3.092MB / 16.7GB 0.02% -- / -- -- / -- 2
3b33001239ee sleepy_stallman -- -- / -- -- -- / -- -- / -- --

显示指定pod的统计信息(无实时流)

podman pod stats --no-stream a9f80
ID NAME CPU % MEM USAGE / LIMIT MEM % NET IO BLOCK IO PIDS
a9f807ffaacd frosty_hodgkin -- 3.092MB / 16.7GB 0.02% -- / -- -- / -- 2

以JSON格式输出指定pod的统计信息

podman pod stats --no-stream --format=json a9f80
[
{
"id": "a9f807ffaacd",
"name": "frosty_hodgkin",
"cpu_percent": "--",
"mem_usage": "3.092MB / 16.7GB",
"mem_percent": "0.02%",
"net_io": "-- / --",
"block_io": "-- / --",
"pids": "2"
}
]

以表格形式输出指定pod的部分统计信息

podman pod stats --no-stream --format "table {{.ID}} {{.Name}} {{.MemUsage}}" 6eae
ID NAME MEM USAGE / LIMIT
6eae9e25a564 clever_bassi 3.031MB / 16.7GB

在这个例子中,我们使用--format选项和Go模板来自定义输出格式。模板中的{{.ID}}{{.Name}}{{.MemUsage}}分别代表容器的ID、名称和内存使用情况。table关键字用于指示podman以表格形式输出结果。

另请参阅

podman(1): Podman的主命令手册页

podman-pod(1): Podman pod子命令的手册页,包含与pods相关的所有命令和选项

历史

该命令和手册页最初由 Dan Walsh 在2019年2月整理。随着Podman项目的不断发展和完善,这些文档也得到了相应的更新和扩展。

在这些示例中,--no-stream选项被用来只获取一次统计数据而不是实时流传输数据。你可以根据需要选择是否使用此选项。如果你想要实时查看统计数据的更新,可以省略--no-stream选项。

请注意,统计数据的显示格式可能因Podman版本和配置的不同而有所差异。确保你的Podman版本是最新的,以便获得最佳的功能和性能。