我使用带有hostPath的卷,因此我可以在本地主机和pod之间共享文件。我的问题是:是否有一种方法可以限制主机路径卷可以由这些pod消耗多少空间,如临时存储请求/限制?如果容器消耗了主机本地目录上的所有空间,会发生什么情况?
volumes:
- hostPath:
path: "/search/data/app"
name: app
No。这不是当前的功能
@coderanger和@DavidMaze是对的*但我想用更多的背景来支持它。
hostPath卷从主机节点上挂载文件或目录将文件系统放入您的Pod。这不是大多数pod所能做到的需要,但它为某些应用程序提供了一个强大的逃生舱口。
例如,
hostPath
的一些用法如下:
运行一个需要访问Docker内部组件的容器;使用
/var/lib/docker
的hostPath
在容器中运行cAdvisor;使用/sys
的hostPath
允许Pod指定给定的
形式存在hostPath
是否应该在Pod运行之前存在,是否应该创建,以及它是什么应该以
由于以下几个原因,不建议使用hostPath
:
您不能直接控制您的pod将在哪个节点上运行,因此您不能保证pod实际上将在具有数据量的节点上调度。
你将你的集群暴露在安全威胁中。
如果一个节点宕机,您需要将pod调度到其他节点上,而您本地配置的卷将不可用。
关于hostPath
卷的潜在限制:
emptyDir
卷的存储介质(如Disk或SSD)为由保存kubelet根文件系统的介质决定dir(通常是/var/lib/kubelet
)。没有限制emptyDir
或hostPath
卷可以占用的空间,并且没有隔离
*一如既往:)
编辑:
包括VAS的建议,并使答案成为社区wiki。
我会尝试创建单独的LVM分区并使用它们的挂载点作为Pod的Hostpath目标目录。在这种情况下,容器不会消耗的内存大于LVM分区大小。它可能会增加一些维护尽管成本。考虑使用iscsi卷作为替代方案存储选择。