简而言之,我在容器中有两个容器,分别名为a
和b
,分别位于端口80和9000上。他们可以通过127.0.0.1:80
和127.0.0.1:9000
相互联系。他们也可以通过名字相互联系吗?
我已经尝试了a.podname:90
,b.podname:9000
,podname:80
以及其他没有运气的变体。
有http://kubernetes.io/docs/admin/dns/#a-records但这些是基于POD分配的IP,事先并不知道。
还有http://kubernetes.io/docs/admin/dns/#srv-records但它们依赖于服务,因此也取决于准备标准。此外,SRV是DNS扩展,有时无法使用。
背景:为了使容器与Kubernetes和其他docker环境兼容,您必须避免依赖于localhost,但可能依赖于固定的端口号。例如,如果在Kubernetes中有一个名称解析为127.0.0.1或POD的IP,则该名称可用作docker-compose中的https://docs.docker.com/compose/compose-file/#/links别名。
答案 0 :(得分:4)
如果你总是要在一个pod中运行这两个容器,那么<em>可以依赖localhost:xyz
来访问,无论该pod在哪里安排。
如果要使用DNS名称,可以为SRV记录创建JWWalker's answer。您可以使用注释覆盖准备行为:a headless service。这应该会给你一个DNS名称来到你的pod。