kubernetes - 容器中的容器如何通过名称相互引用?

标签 kubernetes

简而言之,我在一个Pod中有两个容器,分别位于端口80和9000上,名为ab。他们可以通过127.0.0.1:80127.0.0.1:9000相互联系。他们还能通过名字互相联系吗?

我尝试了a.podname:90b.podname:9000podname:80和其他变体而没有运气。

http://kubernetes.io/docs/admin/dns/#a-records,但是这些是基于POD分配的IP的,该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别名。

特别是我正在尝试解决https://github.com/Reposoft/docker-svn/issues/8

最佳答案

如果您始终要在容器中运行两个容器,则无论该容器在何处调度,都可以依靠localhost:xyz进行访问。

如果要使用DNS名称,则可以为SRV记录创建a headless service。您可以使用注释service.alpha.kubernetes.io/tolerate-unready-endpoints覆盖准备行为。那应该给您一个DNS名称以到达您的Pod。

关于kubernetes - 容器中的容器如何通过名称相互引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40678327/

相关文章:

kubernetes - 使用 Autoscaler 在 GCP 上进行不可调度的 Kubernetes pod

Kubernetes,一个VPA可以管理多个Cronjobs吗?

python - 如何使用 Kubernetes Python 客户端连接到 Google Kubernetes 引擎

google-app-engine - 进入子域

kubernetes - GKE Ingress-GCE 是否支持压缩?

ubuntu - 如何在 Ubuntu 14 中安装最新的生产级 Kubernetes

kubernetes - 单个服务中的多个部署

kubernetes:如何从多个文件创建和使用 configmap

docker - Kubernetes中NodePort类型服务的Pod到Pod通信

kubernetes - Traefik-ingress 仪表板返回 404