|
0
|
| Harsh Manvar · 技术社区 · 7 年前 |
|
|
1
1
如果要为一个集合的每个pod都有专用存储空间,则statefulset必须使用volumeClaimTemplates。基于模板persistentvolumeclaim为每个pod创建并配置要绑定到该声明的卷。生成的PersistentVolumeClaims名称由VolumeClaimTemplate名称+Pod名称+序号组成。 因此,如果将volumeClaimTemplate部分添加到statefulset yaml(并删除特定的persistentvolumeClaim引用),则smth如下所示:
然后创建状态集,然后检查其中一个pods(kubectl get pods pod-name-0 yaml),您将看到类似的smth(输出的体积部分):
因此,通过使用volumeClaimTemplates,您不需要自己创建单独的pvc,然后在每个单独的statefulset中引用要在特定安装路径上安装在容器中的pvc(请记住,集合的每个pod必须引用不同的pvc,1pvc-1pv): _容器_状态集yaml定义的一部分:
因此,为了使集合中的每个pod都有专用的存储空间,而不使用volumeClaimTemplates会导致许多问题和管理和扩展它的过度复杂化。 |
|
|
2
2
一个pvc被绑定到一个特定的pv上。对于状态集,在大多数可以想象的情况下,您希望有一个只能由特定pod访问的pv,这样数据就不会因来自并行进程/pod(rwo而不是rwx模式)的写入尝试而损坏。
考虑到这一点,在statefulset中每个副本需要一个pvc。如果手动创建副本的pvc会很快出现问题,这就是为什么正确的方法是使用
|