Cassandra on Kubernetes podManagementPolicy - OrderedReady 与 Parallel

Cassandra on Kubernetes podManagementPolicy - OrderedReady vs. Parallel

我在互联网上看到的关于 运行 Kubernetes 上的 Cassandra 集群的每篇文章要么省略 podManagementPolicy 字段,要么将其设置为 OrderedReady,这本质上是一样的因为它是默认值。

我想知道是否可以使用podManagementPolicy: Parallel来加快Cassandra集群的多个节点重启时的同步过程。

是的,效果很好。我们在每个有状态集中使用 podManagementPolicy: Parallel,其中也包括 cassandra 集群。这在整个集群重启场景中确实帮助了我们,其中所有 pods 同时出现并同步。

我们集群中 podManagementPolicy: Parallel 的用例:

我们在其上有 3 个节点的裸机 K8s 集群和 3 个节点的 cassandra 集群,利用节点的 local-storage 进行 PV。在 local-storage 的情况下,PV 绑定到节点。因此,如果我们设置 podManagementPolicy: OrderedReady 那么问题是,如果我们关闭集群的 2 个节点,让我们说 cds-pod-1cds-pod-2,它们都会进入未知状态。现在假设我们将节点启动到 cds-pod-2 所在的位置然后它不会启动该 pod 因为它需要 cds-pod-1 处于 运行 状态才能将 cds-pod-2 带到运行 状态。因此我们必须更改 podManagementPolicy: Parallel 然后您可以以任何方式调出 pod,而不依赖于顺序。

据我所知,这是个坏主意。我试过了,最后一个节点进入了 CrashLoopBackoff。原因似乎是,如果加入节点看到另一个节点同时尝试加入,则加入节点会崩溃。

podManagementPolicy: OrderedReady 应该是要走的路。

PodManagement parallel 仍然是一个安全的操作。由于 Cassandra 形成一个环并且没有 master/slave 架构,因此并行启动 pods 是有效的。然而,只要种子 pods 没有启动,其余的副本就会加入崩溃循环,直到种子 pods 正常运行。可能需要重新启动几次,但它们应该会启动。