此处是Kubernetes新手,所以我的问题可能没有道理。请忍受我。
所以我的问题是,假设我在集群中设置了存储类,那么我就有了PVC(使用该存储类)。如果我在部署中使用该PVC,并且该部署有5个副本,那么存储类是否会创建5个PV?每个吊舱一个?还是该部署下所有Pod只能共享1个PV?
编辑:在这个集群中我也有3个节点
谢谢。
答案 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)?