我有一个由 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)
和
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)
这种方法有效,但我无法扩展或使用滚动更新功能。
我想定义一个具有 3 个副本的部署,其中每个副本都有一个唯一的通用标签(例如 1/3、2/3 等副本 ID)。
在服务中,我可以使用选择器来获取即使在更新后仍存在的标签。
另一种解决方案可能是选择 pod/deployment,具体取决于运行它的主机。我可以使用 DaemonSet 或仅使用具有亲和力的 pod/deployment 来确保每个主机都具有我的部署的确切副本。
但我不知道如何根据运行所在的主机标签来选择 pod。
使用主机名不是一个选项,因为主机名会在不同的环境中改变。
我搜索了文档,但没有找到与此用例匹配的任何内容。希望这里有人知道如何解决这个问题。