2016-07-14 42 views
5

从kubernetes docsKubernetes - 使用的名称,而不是“localhost”的一个吊舱内的容器沟通?

在吊舱中的应用都使用相同的网络名称空间(相同的IP和端口的空间),并且因此可以“找到”彼此并使用本地主机进行通信。

是否可以使用一些容器特定的名称而不是locahost

例如,使用docker-compose up,您可以使用服务的名称进行通信。 [docs]

所以,如果我的泊坞窗,compose.yml文件

version: '2' 
services: 
    web: 
    build: . 
    ports: 
     - "8000:8000" 
    srv: 
    build: . 
    ports: 
     - "3000:3000" 

然后,我通过调用http://srv:3000/访问来自websrvhttp://localhost:3000

我怎样才能达到同样的行为在kubernetes?任何方式来指定pod'yaml配置中使用的名称?

回答

9

localhost只是网络环回设备的名称(通常用于IPv4的127.0.0.1和用于IPv6的::1)。这通常是在你的/etc/hosts文件中指定。

分离舱都有自己的IP,所以内部股的容器IP。如果这些容器应该是独立的(即不必并置),他们应各自在自己的吊舱。然后,您可以定义每个允许DNS查找在同一个命名空间不是“$ SERVICENAME”从豆荚,或在不同的命名空间荚“$ SERVICENAME。$名称空间”一service

+0

,但我无法改变,因此'的/ etc/hosts'因为主机可以进出,所以可以手动设置一个吊舱。另外,由于容器属于一起,我不能让它们成为服务。任何方式在这里? – Jatin

1

docker-compose部署单个容器,连接在一起,让他们知道对方的名字和IP。

在Kubernetes一个Pod是相似的,但是这不是一个吊舱的目的而就多个外部服务,并将它们连接在一起。

荚是必须在同一台主机上运行的容器,只有彼此之间进行交互。容器通过本地主机进行内部通信。

大多数Pods其实都是一个容器。

Pod使用Services外部连通。本质上,Pod看起来好像只是一个容器。

在引擎盖下,一个Pod至少有2个容器:pause容器管理Pod的IP,然后是你连接的容器。这使您的容器崩溃,重新启动,并在波德进行重新连接而无需改变IP,允许不涉及调度,并确保该吊舱保持其生命周期内的单个节点上,因此重新启动是快速管理容器崩溃。

如果容器我们每次他们崩溃的时间重新安排,他们将有可能最终会在不同的主机上,路由将不得不更新等..

相关问题