k8s:同一部署的 Pod 之间进行通信

use*_*986 3 kubernetes kubernetes-pod

在属于同一副本集(部署)的 Pod 之间进行通信的推荐方式是什么?是否可以从给定的 pod 中查找其他 pod 的 url?

或者副本集不是一个正确的方法?

寻找正确的 k8s 方法来做到这一点。谢谢!

How*_*ark 8

您可以将StatefulSet与Headless Service结合使用。StatefulSet 的特性之一是独特的一致命名约定:

对于具有 N 个副本的 StatefulSet,StatefulSet 中的每个 Pod 都将被分配一个从 0 到 N-1 的整数序数,该序数在 Set 中是唯一的。

因此,如果您有三个 MyPod 副本,您知道名称将是MyPod-0, MyPod-1, MyPod-2。然后,如果您将它们绑定到名为 的 Headless Service MyHeadlessService,您将能够通过以下方式访问您的 Pod:

MyPod-0.MyHeadlessService
MyPod-1.MyHeadlessService
MyPod-2.MyHeadlessService
Run Code Online (Sandbox Code Playgroud)

要看到这一点,你可以执行MyPod-0

kubectl exec -it MyPod-0 /bin/bash
Run Code Online (Sandbox Code Playgroud)

然后 pingMyPod-1

ping MyPod-1.MyHeadlessService
Run Code Online (Sandbox Code Playgroud)

网上有很多这种模式的示例,您可以决定它是否适合您的用例。有趣的是,ElasticSearch 和 Vault 等集群相关技术使用这种模式进行节点间通信。