是的,StatefulSet
有助于保留pod的顺序和名称,但它在卷方面比常规Deployment
做了什么额外的(或不同的(优势。
作为StatefulSet
的用例,我看到了许多数据库主/从设置的例子,但如果只为主设置Deployment
(副本=1(,为从设置Deployment
(副本=<multiple>
(,就不能解决这个问题。对于卷,只需创建一个PV
/PVC
。
有人能告诉我在数量方面有什么区别吗?
所以,是的,StatefulSet有助于保留pod的顺序和名称,但它所做的额外(或不同(是什么,相对于卷而言,它比常规部署更有优势。
使用StatefulSet,每个Pod都有自己的PersistentVolumeClaim,但使用部署时,所有Pod都使用相同的Persistent VolumeClaim。
StatefulSet
有volumeClaimTemplates
,它从模板中为您创建卷,并在PersistentVolumeClaims的名称上添加-<ordinal>
,因此,如果StatefulSet有replicas: 2
,则具有my-pvc
的名称将是my-pvc-0
和my-pvc-1
。
我看到了许多数据库主/从设置的例子,作为StatefulSet的用例,但如果只为主部署(replicas=1(和为从部署(replica=(,就不能解决这个问题。对于体积,只需创建一个PV/PVC。
是的,这可能适用于测试和开发。但在生产环境中不建议使用。通常在云(和Kubernetes(环境中,您使用一个数据库,该数据库使用三个副本,并且在每个可用性区域中都有一个实例-使用replicas: 3
和适当的PodAfinity配置的单个StatefulSet
更容易管理。