我有一个由3个主机组成的kubernetes集群,其中每个主机都有一个唯一的ID标签.在此群集上有一个具有3个实例(副本)的软件.
每个副本都需要与所有其他副本进行通信.此外,还有一个包含所有pod的服务,以便此应用程序永久可用.
所以我有:
Instance1 (with labels run: theTool,instanceid: 1)
Instance2 (with labels run: theTool,instanceid: 2)
Instance3 (with labels run: theTool,instanceid: 3)
Run Code Online (Sandbox Code Playgroud)
和
Service1 (selecting pods with label instanceid=1)
Service2 (selecting pods with label instanceid=2)
Service3 (selecting pods with label instanceid=3)
Service (selecting pods with label run=theTool)
Run Code Online (Sandbox Code Playgroud)
这种方法有效,但我无法扩展或使用滚动更新功能.
我想定义一个包含3个副本的部署,其中每个副本都获得一个唯一的通用标签(例如副本ID,如1/3,2/3等).
在服务中,我可以使用选择器来获取即使在更新后也会存在的标签.
另一种解决方案可能是选择pod/deployment,具体取决于运行它的主机.我可以使用DaemonSet或只是一个具有亲缘关系的pod /部署来确保每个主机都具有我部署的完全一个副本.
但我不知道如何根据运行它的主机标签选择一个pod.
使用主机名不是一个选项,因为主机名将在不同的环境中更改.
我已经搜索了文档,但对这个用例没什么好处的.希望这里有人知道如何解决这个问题.