同一节点上的pod如何相互通信?

时间:2017-10-02 23:21:57

标签: kubernetes

如果我在2个pod中运行进程,这些进程通过tcp相互通信(通过Kubernetes服务相互寻址),并且pod被安排到同一节点,则通过网络进行通信,或者Kubernetes知道使用环回设备?

2 个答案:

答案 0 :(得分:2)

community/contributors/design-proposals/network/networking

中未提及

环回

  

由于每个pod都获得“真实”(非机器私有)IP地址,因此pod可以在没有代理或翻译的情况下进行通信。该pod可以使用众所周知的端口号,并且可以避免使用更高级别的服务发现系统,如DNS-SD,Consul或Etcd。

     

当任何容器调用ioctl(SIOCGIFADDR)(获取接口的地址)时,它会看到任何对等容器看到的来自相同的IP - 每个pod都有自己的IP地址,其他pod可以知道。<登记/>   通过使pod内部和外部的IP地址和端口相同,我们创建了一个无NAT的扁平地址空间。运行“ip addr show”应该按预期工作。这将使所有现有的命名/发现机制能够开箱即用,包括自注册机制和分配IP地址的应用程序。
  我们应该针对pod间网络通信进行优化

去年在“Kubernetes - container communication within a pod using names instead of 'localhost'?

中已经提到过使用知识产权

答案 1 :(得分:1)

在kubernetes集群中,可以在集群中的任何节点中调度Pod。想要访问它的另一个Pod在理想情况下不应知道此Pod在何处运行或其POD IP地址。 Kubernetes通过为kubernetes服务(与Pod相关联)提供DNS名称来提供一种基本的服务发现机制。当某个Pod想要与另一个Pod对话时,应使用DNS名称(例如svc1.namespace1.svc.cluster.local)