拥有与节点一样多的Pod

时间:2020-10-26 21:08:55

标签: mysql kubernetes replicaset

我们目前正在使用2个节点,但将来可能会需要更多。

StatefulSets是一个mariadb-galera,当前副本位于2。

当我们有一个新的节点时,我们希望副本为3,如果不再需要它,我们将其删除,或者将另一个节点设为2。

实际上,如果我们有3个节点,则每个节点上需要3个副本。

我可以使用Pod Topology Spread Constraints,但我们将有一堆“未计划的”广告连播。

是否有一种方法可以在每次添加或删除节点时自动调整副本的数量?

2 个答案:

答案 0 :(得分:2)

当我们有一个新的节点时,我们希望副本为3,如果不再需要它,我们将其删除,或者将另一个节点设为2。

我建议反过来做。管理您的容器工作负载的副本,并在此之后调整节点数。

例如参见Cluster Autoscaler了解如何完成此操作,这取决于您的集群使用的云提供商或环境。

指定CPU and Memory requests使其占据整个节点也很重要。

对于MariaDB和类似的工作负载,应使用StatefulSet而不是DaemonSet

答案 1 :(得分:1)

您可以使用守护程序集https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/

这将确保每个节点只有一个吊舱。

DaemonSet确保所有(或某些)节点都运行Pod的副本。将节点添加到群集时,会将Pods添加到它们。当节点从群集中删除时,这些Pod会被垃圾收集。删除DaemonSet将清除其创建的Pod。

此外,由于像状态集一样的Pod身份概念,因此不建议在状态集之外的其他任何地方运行数据库。

由于所有的数据库管理,建议使用任何由云提供商管理的数据库或对其进行管理,特别是在集群内部会引起多个问题