gpt4 book ai didi

database - 使用 Kubernetes 在物理机上设置本地持久卷

转载 作者:搜寻专家 更新时间:2023-10-30 22:23:43 25 4
gpt4 key购买 nike

我先声明一下:我是 Kubernetes 新手,如果我问错了问题,请放轻松。

好的,这就是我要做的。我计划使用一些物理机为我的项目构建一个 Kubernetes。

我有 1 个主服务器和 2 个工作节点。我的服务 docker (pods) 将由 Kubernetes master 分配,他们将需要存储数据库 (MySQL)

四处寻找后,我想出了一个Persistent Volume的解决方案,但我不想使用那些在线云服务,例如Google CloudAzure Cloud 等。它引导我找到另一个解决方案 - Local Persistent Volume (LPV),这是我目前遇到的问题。

LPV 的问题在于它与特定节点相连,因此如果该节点出现问题或出现问题,我将无法在其他节点上复制(备份)数据库使用物理磁盘,我会丢失所有数据库,对吗?

问题是,是否有任何解决方案可以使用 Local Persistent Volume 在数据库上设置复制?例如,我在节点 1 上有一个数据库,在节点 2 上有一个备份版本,所以当 节点 1 不可用时,pods将挂载到节点 2 上的备份数据库。

提前致谢!

最佳答案

  1. 您可以使用节点上的本地卷将数据库部署为有状态集。只需创建卷并将它们放入 StorageClass

  2. 对于备份,您需要在数据库级别(而非卷级别)设置复制到某个其他集群/其他运行在其他地方/或其他集群上的数据库实例。

  3. Pod 故障无论如何都由 kubernetes 处理,如果出现异常,它会重启 pod。

  4. statefulset无法处理节点故障(一个节点不能替换另一个,换句话说,在statefulset中一个pod不会在其他节点上重启,kubernetes会等待节点回来)

  5. 如果您要进行简单的单一 pod 部署而不是 statefulset,您可以将数据库部署为单一 pod,将另一个实例部署为单一 pod,并使用节点选择器在不同节点上运行它们,然后从一个节点设置复制实例到数据库级别的另一个实例,并配置您的客户端应用程序以在主实例不可用时故障转移到回退实例,这需要同步复制。

链接:

Run a Single-Instance Stateful Application ( MYSQL)

Run a Replicated Stateful Application ( MYSQL )

关于database - 使用 Kubernetes 在物理机上设置本地持久卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56966841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com