我正在将openshift与glusterfs一起用作存储系统。动态预配置工作得很好,但是始终将分配的容量四舍五入到下一个GB值。例如:我请求的容量为400MB,但创建的容量为1GB。
此行为可以配置吗?我通过带有openshift / ansible的高级安装来设置openshift。
答案 0 :(得分:2)
Kubernetes就是这样工作的。在定义了静态卷的情况下,分配请求用于获取可用的最佳匹配。因此,如果没有一个确切的尺寸,它将抓住下一个尺寸。它无法拆分持久卷,而只能将其中一部分提供给您。它也没有强制执行任何限制,因此,尽管您请求400MB,但您将能够使用永久卷所提供的1GB。
如果您想节省存储空间,并且提供的存储类型为ReadWriteMany,则可以通过指定在每种情况下都应将卷的子路径装入到应用程序中,来对多个应用程序使用一个持久卷声明。各自的容器。只是意识到没有配额可以阻止一个应用程序使用永久卷上的所有存储,所以要小心,例如,与数据库和其他可能运行猖ramp并使用所有空间的应用程序共享永久卷您要做的事情是数据库空间不足。
答案 1 :(得分:1)
呼应Graham的回复:是的,这就是Kubernetes的工作方式,但原因可能出在GlusterFS和/或Heketi。 source code for the provisioner包含以下几行:
// GlusterFS/heketi creates volumes in units of GiB.
sz, err := volutil.RoundUpToGiBInt(capacity)
因此,答案显然是:由于舍入单位是硬编码的,因此无法更改舍入单位。我缺少关于此限制是体系结构还是配置问题的解释,但是,代码中的注释仍将问题精确地定位到GlusterFS / Heketi的分配算法。