例如,在群集中运行多个实例时,使用Deployment for DB Server有什么影响?
是否存在诸如同步/复制问题之类的问题? />
背景:我想在故障转移群集中运行MongoDB,因此至少有2个实例正在运行。
#1 楼
当Kubernetes宣布K8s v1.5的新StatefulSet功能(将其从旧的PetSet
名称转换过来)时,他们发布了一个非常不错的博客文章,并通过其用法示例进行了介绍:https://kubernetes.io/blog/2016 / 12 / statefulset-run-scale-stateful-applications-in-kubernetes / 第一段对差异化功能的描述非常好,这在我脑海中始终浮现:
...“每个索引最多一个pod”,用于在集合中部署Pod。除了有序的部署,有序的终止,唯一的网络名称和持久稳定的存储...
分解重要的内容:
唯一的网络名称
在部署中,网络名称无关紧要,因为任何Pod都应该能够接管工作。但是,当您运行诸如有状态集群之类的事物时,可能会有“主”和“从”的概念。这种独特的网络命名将使您可以通过引用具有可预测的增量名称的特定pod来保持区别。有状态集群,因为您可能需要关键机器保持更长的时间。如果您有协调者或“领导者”节点,则这些节点应该是最后一个要重新启动的节点。 StatefulSets允许您执行此操作。链接的博客文章甚至显示了一个这样的示例。默认情况下,StatefulSets保留其存储。 Kubernetes不会自动删除附加到StatefulSet的存储。部署可以达到相同的目的,但不是默认设置。