我有一个带有 3 个副本的 MySQL 数据库 pod。
现在我正在对一个 pod(pod 数据,而不是 pod 配置)进行一些更改,比如我正在添加一个表。
更改将如何反映在 pod 的其他副本上?
我正在使用具有 3 个工作节点的 kubernetes v1.13。
我有一个带有 3 个副本的 MySQL 数据库 pod。
现在我正在对一个 pod(pod 数据,而不是 pod 配置)进行一些更改,比如我正在添加一个表。
更改将如何反映在 pod 的其他副本上?
我正在使用具有 3 个工作节点的 kubernetes v1.13。
POD 不同步。将它们视为独立的过程。
如果您想要集群 MySQL 安装,Kubernetes 文档描述了如何使用 StatefulSet 来执行此操作:https ://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/#deploy-mysql
本质上,您必须自己配置 MySQL 的主/从实例。
Pod 相互独立,修改一个 Pod 不会影响其他 Pod
根据您的配置 - 在一个 pod 中应用的更改不会反映在所有其他 pod 中。这些是孤立的资源。使用PersistentVolumeClaims和StatefulSets部署这些东西是一种很好的做法。
您始终可以在Run a Replicated Stateful Application文档中找到带有示例和最佳实践的解释。
如果你有 3 个 mysql 服务器 pod,那么你就有 3 个独立的数据库。即使您从同一个部署创建它们。因此,根据您的操作,您最终可能会在集群中拥有一堆数据库。
我会创建 1 个具有持久性的 mysql pod,所以如果一个 pod 死了,如果另一个 pod 离开的地方,下一个会取走。不会丢失数据。
如果您想要的是高可用性或故障转移副本,则您需要自行管理它。
一般来说,K8s 不应该用于存储目的。
您最好在这 3 个 pod (PVC) 中使用公共存储,并且在 k8s 上运行数据库时还可以考虑 STS。