我有一种情况,我有一个带有服务的集群(我们将其命名为 A1),它的数据在我的例子中位于远程存储(如 cephFS)上。我的服务的副本数为 1。假设我的集群中有 5 个节点,服务 A1 驻留在节点 1 中。节点 1 网络发生了一些事情,它也失去了与 cephFS 集群和我的 Kubernetes 集群的连接(或 docker-一群)。集群将其标记为无法访问并在节点 2 上启动一个新服务(我们将其命名为 A2)以保持副本为 1。例如 15 分钟后,节点 1 网络固定并且节点 1 回到集群并且服务 A1 已经运行(假设它在失去与远程存储的连接时没有崩溃)。
我使用 docker-swarm,最近切换到 Kubernetes。我看到 Kuber 有一个名为 StatefulSet 的功能,但是当我读到它时。它没有回答我的问题。(或者当我读到它时我可能会错过一些东西)
问题A:集群是做什么的。是保持 A2 并关闭 A1 还是让 A1 继续工作并关闭 A2(逻辑上它应该关闭 A1)
问题 B(也是我的主要问题!):假设集群想要关闭这些服务(例如 A1)。此服务在要关闭时会节省一些存储空间。在这种情况下,状态 A1 保存到磁盘,具有较新状态的 A2 在 A1 网络修复之前保存了一些内容。当我们将卷挂载到容器时必须有一些锁,当它附加到一个容器时,其他容器无法写入该容器(当 A1 想要将其旧状态数据保存在磁盘上时失败)