存储类是否可以动态配置每个Pod的持久卷?

时间:2020-04-12 00:23:00

标签: kubernetes

此处是Kubernetes新手,所以我的问题可能没有道理。请忍受我。

所以我的问题是,假设我在集群中设置了存储类,那么我就有了PVC(使用该存储类)。如果我在部署中使用该PVC,并且该部署有5个副本,那么存储类是否会创建5个PV?每个吊舱一个?还是该部署下所有Pod只能共享1个PV?

编辑:在这个集群中我也有3个节点

谢谢。

2 个答案:

答案 0 :(得分:2)

Persistent Volume Claim资源是与部署分开指定的。部署有多少个副本都无所谓,kubernetes只会拥有您定义的PVC资源数量。

如果您正在寻找创建自己PVC的多个有状态容器,请改用StatefulSet。这包括VolumeClaimTemplate定义。

如果您希望所有部署副本共享一个PVC,则存储类提供程序插件将为ReadOnlyMany or ReadWriteMany

答案 1 :(得分:1)

直接回答我的问题。

在这种情况下,存储类将仅提供一个PV,并且在使用该PVC的Deployment中的所有Pod之间共享。

PVC的accessModes不会规定是否为每个Pod创建一个PV。您可以将 accessModes 设置为ReadWriteOnce / ReadOnlyMany / ReadWriteMany,它将始终创建1个PV。

如果您希望每个Pod都有自己的PV,则不能在“部署”下执行此操作

您将需要通过 volumeClaimTemplates 使用 StatefulSet

重要是StatefulSet使用volumeClaimTemplates,否则,它仍将与Deployment相同,即存储类将仅提供一个PV,该PV在该StatefulSet下的所有Pod中共享

参考:

Kubernetes Deployments vs StatefulSets

Is there a way to create a persistent volume per pod in a kubernetes deployment (or statefulset)?