在属于同一副本集(部署)的 Pod 之间进行通信的推荐方式是什么?是否可以从给定的 pod 中查找其他 pod 的 url 是什么?
或者副本集不是一个正确的方法?
寻找正确的 k8s 方式来做到这一点。谢谢!
在属于同一副本集(部署)的 Pod 之间进行通信的推荐方式是什么?是否可以从给定的 pod 中查找其他 pod 的 url 是什么?
或者副本集不是一个正确的方法?
寻找正确的 k8s 方式来做到这一点。谢谢!
您可以将StatefulSet与Headless Service结合使用。StatefulSet 的特性之一是独特的一致命名约定:
对于具有 N 个副本的 StatefulSet,StatefulSet 中的每个 Pod 将被分配一个从 0 到 N-1 的整数序号,该序号在 Set 中是唯一的。
因此,如果您拥有三个 MyPod 副本,您知道名称将是MyPod-0, MyPod-1, MyPod-2。然后,如果您将它们绑定到名为 的无头服务MyHeadlessService,您将能够通过以下方式访问您的 pod:
MyPod-0.MyHeadlessService
MyPod-1.MyHeadlessService
MyPod-2.MyHeadlessService
要看到这一点,您可以执行到MyPod-0
kubectl exec -it MyPod-0 /bin/bash
然后pingMyPod-1
ping MyPod-1.MyHeadlessService
网上有很多这种模式的例子,你可以决定它是否适合你的用例。作为轶事,ElasticSearch 和 Vault 等集群相关技术使用这种模式进行节点间通信。