拥有与节点一样多的 Pods

Having as many Pods as Nodes

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

StatefulSets 是 mariadb-galera 当前副本在 2。

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

事实上,如果我们有 3 个节点,我们希望每个节点上有 3 个副本。

我可以使用 Pod Topology Spread Constraints,但我们会有一堆“notScheduled”pods。

有没有办法在每次添加或删除节点时自动调整 Replica 的数量?

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

这将确保每个节点有一个 pod。

DaemonSet 确保所有(或部分)节点 运行 一个 Pod 的副本。随着节点被添加到集群中,Pods 被添加到它们中。随着节点从集群中移除,那些 Pods 被垃圾收集。删除 DaemonSet 将清除它创建的 Pods。

另外,由于 statefulsets 具有 pod 身份概念,不建议 运行 除了 statefulset 之外的任何数据库。

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

When we'll had a new Nodes we want the replica to be a 3, f we don't need it anymore and we delete it or a other Node we want it to be a 2.

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

参见例如Cluster Autoscaler如何做到这一点,取决于您的集群使用的云提供商或环境。

指定您的 CPU and Memory requests 也很重要,这样它会占据整个节点。

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