在属于同一副本集(部署)的Pod之间进行通信的推荐方法是什么?是否可以查找给定Pod中其他Pod的网址?
或者副本集不是正确的做法吗?
寻找正确的k8s方法来执行此操作。谢谢!
答案 0 :(得分:3)
您可以将StatefulSet与Headless Service结合使用。 StatefulSet的功能之一是唯一的一致命名约定:
对于具有N个副本的StatefulSet,StatefulSet中的每个Pod将为 分配了一个从0到N-1的整数序数,该序数是唯一的 在布景上。
因此,如果您拥有MyPod的三个副本,则知道名称将为MyPod-0
,MyPod-1
,MyPod-2
。然后,如果您将它们绑定到名为MyHeadlessService
的无头服务,则可以通过以下方式到达您的吊舱:
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)使用此模式进行节点间通信。