如何将有状态集的第一个副本调度到特定节点

How to schedule the first replica of a statefulset to a specific node

我有一个带有多个副本的 StatefulSet,例如两个区域中的 3 个和多个 kubernetes 节点。

我想将 FIRST 个副本放在所选区域中,其余的放在其他区域中。

为什么是第一个?每个 pod 都是一个数据库实例。它们之间配置了复制。默认情况下第一个节点是主节点。

所以我希望能够影响第一个节点的安装位置。

这在 StatefulSet 中不受支持,因为每个副本的 Pod 模板都是相同的。

您可以通过编写自定义调度程序来实现此目的。如需灵感,请参阅这篇文章,了解 CockroachDB 的自定义调度程序:A Custom Kubernetes Scheduler to Orchestrate Highly Available Applications