【问题标题】:How pod replicas sync with each other - Kubernetes?pod 副本如何相互同步 - Kubernetes?
【发布时间】:2019-03-12 04:22:30
【问题描述】:

我有一个带有 3 个副本的 MySQL 数据库 pod。
现在我正在对一个 pod(pod 数据,而不是 pod 配置)进行一些更改,比如我正在添加一个表。
更改将如何反映 pod 的其他副本?

我正在使用具有 3 个工作节点的 kubernetes v1.13。

【问题讨论】:

  • (这个解释只是我想知道的一个例子)
  • 您在节点/服务中进行更改,而不是在 pod 中,当您运行这些节点和服务时会启动 pod。因此节点/服务的任何变化都会反映在所有 4 个 pod 中。
  • 你能详细说明一下吗?@MukarramAli

标签: kubernetes kubernetes-pod kubernetes-service


【解决方案1】:

POD 不同步。将它们视为独立的进程。

如果您想要集群式 MySQL 安装,Kubernetes 文档描述了如何使用 StatefulSet 来执行此操作:https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/#deploy-mysql

本质上你必须自己配置MySQL的主/从实例。

【讨论】:

    【解决方案2】:

    Pod 相互独立,修改一个 Pod 不会影响其他 Pod

    【讨论】:

    • 我没有更改 pod 规格,我的问题是 pod 的一个副本(pod 内的数据)的变化如何反映在其他副本上@schenkel
    • 是的,我指的是任何类型的更改(内部数据、规格等...),例如 @VKR 说你应该使用 StatefulSet,他的回答很好
    【解决方案3】:

    根据您的配置 - 在一个 pod 中应用的更改不会反映在所有其他 pod 中。这些是孤立的资源。 使用PersistentVolumeClaimsStatefulSets 部署此类东西是一种很好的做法。

    您始终可以在 Run a Replicated Stateful Application 文档中找到带有示例和最佳实践的解释。

    【讨论】:

      【解决方案4】:

      如果你有 3 个 mysql 服务器 pod,那么你就有 3 个独立的数据库。即使您从同一个部署创建它们。因此,根据您的操作,您最终可能会在集群中拥有一堆数据库。

      我会创建 1 个具有持久性的 mysql pod,所以如果一个 pod 死掉了,如果另一个 pod 离开了,下一个会取走另一个 pod。不会丢失数据。

      如果您想要的是高可用性或故障转移副本,则需要自行管理。

      一般来说,K8s 不应该用于存储目的。

      【讨论】:

      • 感谢您的回答,这很有帮助,但我的问题是 pod 的一个副本(pod 内的数据)的变化如何反映在其他副本上。如果它不会在没有 PV 的其他 pod 上反射,我为什么要使用副本?
      【解决方案5】:

      最好在这 3 个 pod (PVC) 中使用公共存储,并且在 k8s 上运行数据库时还可以考虑 STS。

      【讨论】:

        猜你喜欢
        • 2019-02-28
        • 2018-07-05
        • 2018-12-18
        • 2017-03-16
        • 2021-06-26
        • 2016-09-20
        • 1970-01-01
        • 1970-01-01
        • 2017-06-22
        相关资源
        最近更新 更多