【问题标题】:What is the difference between StatefulSet and Deployment with respect to Volumes? [duplicate]就卷而言,StatefulSet 和 Deployment 有什么区别? [复制]
【发布时间】:2021-03-06 09:16:34
【问题描述】:
所以是的,StatefulSet 有助于保留 pod 的顺序和名称,但它在容量方面比常规 Deployment 有什么额外(或不同)优势。
我看到许多数据库的主/从设置示例作为StatefulSet 的用例,但不能仅通过主服务器的Deployment (replicas=1) 和Deployment 来解决该问题(副本=<multiple>)为奴隶。对于卷只需创建一个PV/PVC。
有人可以告诉我在音量方面有什么区别吗?
【问题讨论】:
标签:
kubernetes
kubernetes-statefulset
kubernetes-deployment
【解决方案1】:
所以是的,StatefulSet 有助于保留 pod 的顺序和名称,但是它做的额外(或不同)在容量方面优于常规 Deployment 的原因是什么。
通过 StatefulSet,每个 Pod 都会获得自己的 PersistentVolumeClaim,但通过 Deployment,所有 Pod 都使用相同的 PersistentVolumeClaim。
StatefulSet 有 volumeClaimTemplates 从模板为您创建卷,并在 PersistentVolumeClaims 的名称上添加 -<ordinal>,因此如果 StatefulSet 有 my-pvc 的名称将是 my-pvc-0 和replicas: 2.
我看到了许多数据库的主/从设置示例作为 StatefulSet 的用例,但不能仅通过主部署 (replicas=1) 和部署 (replicas=) 来解决该问题奴隶。对于卷只需创建一个 PV/PVC。
是的,这可能会起作用 - 用于测试和开发。但不建议在生产环境中使用。通常在云(和 Kubernetes)环境中,您使用的数据库使用三个副本,并且在每个可用区中都有一个实例 - 这更易于使用单个 StatefulSet 和 replicas: 3 进行管理和正确的 PodAffinity 配置。