如果我在2个pod中运行进程,这些进程通过tcp相互通信(通过Kubernetes服务相互寻址),并且pod被安排到同一节点,则通过网络进行通信,或者Kubernetes知道使用环回设备?
答案 0 :(得分:2)
环回
由于每个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)