kubernetes statefulsets:节点在同一节点上重启后是否看到相同的持久卷

时间:2018-05-05 13:58:29

标签: kubernetes

我正在阅读kubernetes local storage design。它有一个 @{ int i = 0; foreach (var item in medProviders) { <tr class="sortList" style="cursor:pointer" id="increment-@i" data-id="@item.Id" data-lat="@item.Latitude" data-long="@item.Longitude"> <td> @item.Firstname <br>*ABR</br> </td> <td id="distance-@i"></td> <td id="duration-@i"></td> </tr> i++; } } </tbody> 部分,其中db自己复制数据。

我的问题是,如果db的任何进程出现故障,是否会在同一节点/机器上重新启动?我认为这是肯定的。

如果是,是否可以访问崩溃之前的distributed database

我在阅读测试版时​​看到older article关于local storage的信息。该文章当时并没有鼓励使用本地存储。

我是Kubernetes的新手,所以请回答这个问题,提供一些新的理解需求的信息。

1 个答案:

答案 0 :(得分:1)

在本地存储设计中,您可以阅读here,它与状态集一起使用。因此,例如,如果你想要三个名为mongodb的mongodb实例,那么k8s将为你创建三个pod:

  • 的mongodb-1
  • 的mongodb-2
  • 的mongodb-3

如果mongodb-2失败,则k8s将使用相同的本地存储或持久卷重新启动它。 如果增加副本数,则k8将通过persistentVolumeClaimTemplate创建新的持久卷。如果将它缩小到两个,那么新创建的卷将不会被删除并将被使用,您将返回到之前的副本数量。

如果您的持久卷绑定到特定节点,那么k8s将知道在该节点上创建您的pod。

您可以在此处阅读有关mongodb群集状态设置示例:https://kubernetes.io/blog/2017/01/running-mongodb-on-kubernetes-with-statefulsets

或者您可以在这里查看精彩的演讲(演示): https://www.youtube.com/watch?v=m8anzXcP-J8&feature=youtu.be

很好地解释了有状态集和本地存储的使用。