有没有办法计算节点上每个pod使用的总磁盘空间?

问题描述 投票:0回答:1

背景

我们当前的背景如下:研究人员正在我们的 Kubernetes 集群上运行 HPC 计算。不幸的是,一些 Pod 无法调度,因为容器引擎(此处为 Docker)无法提取映像,因为节点磁盘空间不足。

假设

图片太大

第一个假设是图像太大。情况可能如此,因为我们知道某些图像大于 7 GB。

数据集在本地解压

我们的第二个假设是,有些人在本地下载他们的数据集(例如

curl ...
)并在本地膨胀它们。这将产生我们正在观察的行为。

设想的解决方案

我相信这个问题对于可以访问节点文件系统的守护进程集来说是一个很好的例子。通常,该 Pod 会计算节点上所有 Pod 使用的总磁盘空间,并将它们公开为 Prometheus 指标。从那里可以轻松设置警报规则,以检查哪些 Pod 在短时间内增长了很多。

如何计算Pod使用的总磁盘空间?

那么问题就变成了:有没有办法计算 pod 使用的总磁盘空间?

有人有这方面的经验吗?

kubernetes
1个回答
0
投票

Kubernetes 不跟踪可用的总体存储。它只知道有关emptyDir卷和支持这些卷的文件系统的信息。

要计算总磁盘空间,您可以使用以下命令

kubectl describe nodes

从上面的命令输出中,您可以 grep ephemeral-storage 这是虚拟磁盘大小;该分区也由 Pod 通过 emptyDir 卷、图像层、容器日志和容器可写层共享和使用。

检查进程仍在运行的位置并保存文件描述符和/或可能有一些空间(您可能还有其他进程和其他文件描述符也没有被释放)。检查那是 kubelet 吗?

您可以通过运行来验证

$ ps -Af | grep xxxx

使用 Prometheus,您可以使用以下公式进行计算

sum(node_filesystem_size_bytes)

请参阅使用 Prometheus 获取总磁盘空间和可用磁盘空间了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.