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版本是最新的,以便获得最佳的功能和性能。