首页 > 解决方案 > kubernetes statefulsets:节点在同一节点上重新启动后是否看到相同的持久卷

问题描述

我正在阅读Kubernetes 的本地存储设计。它有一个部分用于distributed databasedb 自行复制数据的位置。

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

如果是,它是否可以访问local storage它在崩溃之前拥有的它?

我读过一篇关于它何时处于测试阶段的旧文章。stateful sets文章当时不鼓励使用本地存储。

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

标签: kubernetes

解决方案


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

  • mongodb-1
  • mongodb-2
  • MongoDB-3

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

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

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

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

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


推荐阅读