我有一个简单的目标,但我不知道如何让Kubernetes发挥作用。
对于我的特定应用程序,我试图部署多个docker映像的副本,这些映像是另一服务的工作程序。该系统使用工作程序的主机名来区分同时运行的工作程序。
我希望能够部署一个集群,其中每个节点都为此服务运行一个工作器。
问题在于,主服务器还会跟踪曾经为其工作过的每个工人,并将其显示在状态仪表板上。目的是您手动旋转固定数量的工人,然后以这种方式离开。我希望能够调整群集的大小,并相应地更改工作人员的数量。
对于DaemonSet来说,这似乎是一个完美的应用程序,只是主机名是随机生成的,而主机最终会跟踪许多孤立的主机名。
一种替代方法可能是StatefulSet,它为我们提供了确定性的主机名,但是我找不到一种方法来强制它扩展到每个节点一个pod。
我正在运行的系统是开源的,我正在研究更改其识别工作人员的方式以避免这种混乱,但是我想知道是否有任何明智的方法来动态地将StatefulSet扩展到集群中的节点数。或通过任何方式实现类似功能。
答案 0 :(得分:0)
一种方法是使用nodeSelector,但我完全同意@Markus:更正确和高级的方法是使用anti-affinity。这确实非常强大,同时又提供了简单的解决方案,可防止将具有相同标签的Pod调度到1个节点。