具有多个可用区域的 EKS 集群中的持久存储

具有多个可用区域的 EKS 集群中的持久存储

我有一个带有一个 Linux 工作节点的 EKS 集群,该节点可以在区域内的任何可用区域中实例化。我需要使用持久存储卷,这样如果节点死亡,我的数据就不会丢失。值得一提的是,我说的是 RabbitMQ 数据。

我尝试过使用 EBS 卷,但它有一个硬性限制,即它只能绑定到单个可用区。如果节点死亡,然后实例化到不同的可用区,无法挂载 EBS 卷

到目前为止我有以下想法:

  1. 将单个 EBS 卷附加到工作节点。当工作节点在不同的可用区重新启动时,创建一个EBS 快照,并使用它在正确的可用区域中创建新的 EBS 卷。新节点实例将挂载新的 EBS 卷。

  2. 每个可用区都有一个工作节点,并配有专用的 EBS 卷。RabbitMQ 可以自动在 EBS 卷之间复制数据。这样就无需使用 EBS 快照,如解决方案 1 中建议的那样。

  3. 拥有一个可附加到所有可用区域内的多个节点的单个 EFS 卷。

此外,我还遇到了这个帖子这解释了针对我的问题的更复杂的方法:

对于 Kubernetes 1.10/1.11,我推荐的另一个选项是控制卷的创建位置以及 Pod 的调度位置:

您能帮我比较一下这些方法吗?例如,从可扩展性、成本效益、可维护性等方面来看……或者您能想到一个更好的方法吗?

答案1

解决这个问题的方法是使用 EFS 而不是 EBS,这将确保当一个节点死亡时,新的 pod 将能够连接到相同的存储。

EFS 跨多个可用区域进行复制,其成本是 EBS 的 3 倍。

您可能需要考虑使用托管消息队列服务(如 Kafka 或 Kinesis 等)来减少管理开销,从而实现更具成本效益的解决方案

相关内容