k8s:在同一部署的 pods 之间进行通信
k8s: Communicating between pods of same deployment
属于同一副本集(部署)的 pods 之间推荐的通信方式是什么?是否可以从给定的 pod 中查找其他 pods 的 url?
或者复制集不是一个正确的方法吗?
寻找正确的 k8s 方法来做到这一点。谢谢!
您可以使用 StatefulSet in conjunction with a Headless Service。 StatefulSet 的特点之一是唯一一致的命名约定:
For a StatefulSet with N replicas, each Pod in the StatefulSet will be
assigned an integer ordinal, from 0 up through N-1, that is unique
over the Set.
因此,如果您有 MyPod 的三个副本,您知道名称将是 MyPod-0
、MyPod-1
、MyPod-2
。然后,如果您将它们绑定到名为 MyHeadlessService
的无头服务,您将能够通过以下方式访问您的 pods:
MyPod-0.MyHeadlessService
MyPod-1.MyHeadlessService
MyPod-2.MyHeadlessService
要查看此内容,您可以执行 MyPod-0
kubectl exec -it MyPod-0 /bin/bash
然后 ping MyPod-1
ping MyPod-1.MyHeadlessService
网上有很多关于此模式的示例,您可以决定它是否适合您的用例。作为轶事,ElasticSearch 和 Vault 等集群相关技术使用这种模式进行 inter-node 通信。
属于同一副本集(部署)的 pods 之间推荐的通信方式是什么?是否可以从给定的 pod 中查找其他 pods 的 url?
或者复制集不是一个正确的方法吗?
寻找正确的 k8s 方法来做到这一点。谢谢!
您可以使用 StatefulSet in conjunction with a Headless Service。 StatefulSet 的特点之一是唯一一致的命名约定:
For a StatefulSet with N replicas, each Pod in the StatefulSet will be assigned an integer ordinal, from 0 up through N-1, that is unique over the Set.
因此,如果您有 MyPod 的三个副本,您知道名称将是 MyPod-0
、MyPod-1
、MyPod-2
。然后,如果您将它们绑定到名为 MyHeadlessService
的无头服务,您将能够通过以下方式访问您的 pods:
MyPod-0.MyHeadlessService
MyPod-1.MyHeadlessService
MyPod-2.MyHeadlessService
要查看此内容,您可以执行 MyPod-0
kubectl exec -it MyPod-0 /bin/bash
然后 ping MyPod-1
ping MyPod-1.MyHeadlessService
网上有很多关于此模式的示例,您可以决定它是否适合您的用例。作为轶事,ElasticSearch 和 Vault 等集群相关技术使用这种模式进行 inter-node 通信。