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



上下文

我们目前的情况如下:研究人员正在我们的Kubernetes集群上运行HPC计算。不幸的是,有些pod无法调度,因为容器引擎(这里是Docker)无法提取映像,因为节点的磁盘空间不足。

假设

图像太大

第一个假设是图像太大。这种情况可能是因为我们知道有些图像大于7 GB。

正在本地解压缩的数据集

我们的第二个假设是,有些人正在本地下载他们的数据集(例如curl ...),并在本地对其进行膨胀。这将产生我们正在观察的行为。

设想的解决方案

我认为,对于可以访问节点文件系统的守护程序集来说,这个问题是一个很好的例子。通常,这个pod会计算节点上所有pod使用的总磁盘空间,并将其作为普罗米修斯度量进行公开。从那里可以很容易地设置警报规则,以检查哪些豆荚在短时间内长得很大。

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

然后问题就变成了:有没有办法计算吊舱使用的总磁盘空间?

有人有这方面的经验吗?

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

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

kubectl describe nodes

从上面的命令输出中,您可以grep临时存储,这是虚拟磁盘大小;这个分区也由Pods通过emptyDir卷、映像层、容器日志和容器可写层共享和使用。

检查进程仍在运行的位置,并保存文件描述符和/或一些空间(您可能也有其他进程和其他文件描述符未发布)。检查是库贝莱。

您可以通过运行$ ps -Af | grep xxxx进行验证

使用普罗米修斯,您可以使用以下公式计算

sum(node_filesystem_size_bytes)

有关详细信息,请访问使用普罗米修斯获得总磁盘空间和可用磁盘空间。

相关内容

  • 没有找到相关文章

最新更新