我开始熟悉 Kubernetes,还没有找到在 Kubernetes 中部署有状态服务的简单解决方案。
AFAIK最适用的东西是Pet Set,但是,它仍然处于alpha阶段,只能完全删除;另外,我觉得我不明白应该如何管理持久卷才能在宠物套装游戏中幸存下来。我想出的另一个选择是将服务部署拆分为引导节点部署、引导节点服务和所有其他节点部署,这允许我使用引导节点服务作为联系点(虽然这并不完全安全) )。
这种情况下流行的方法是什么,它们有什么优点和缺点?
最佳答案
如果您正在 Kubernetes 集群的有状态集群中查看一定数量的 Pod,PetSets(我相信它现在被称为 StatefulSets)就是答案……或者您可以为每个 Pod 定义一个服务来实现相同的目的。
为了让 Pod 知道其他 Pod 的 IP,您可以使用 headless 服务,它为您提供与标签关联的 IP 列表。
对于存储,如果你使用 emptyDir,你有本地存储,但是当 Pod 被移除/重新调度时你会丢失它。
我在 Kubernetes 中使用 Zookeeper,设置起来有点麻烦,但是 Zookeeper 提供了“重新配置”API,允许在节点更改时重新配置集群,因此在新节点启动时重新定义集群相当容易当 Pod 被重新调度时。我不确定 Consul 是否具有相同类型的功能,但可能确实如此。
关于kubernetes - 在 Kubernetes 中部署有状态应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38852026/