Kubernetes - 使用名称而不是"localhost"在pod中进行容器通信?

Jat*_*tin 9 docker kubernetes docker-compose

来自kubernetes 文档:

pod中的应用程序都使用相同的网络命名空间(相同的IP和端口空间),因此可以相互" 查找 "并使用localhost进行通信.

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

例如,使用docker-compose up,您使用服务的名称进行通信.[文档]

所以,如果我的docker-compose.yml文件是

version: '2'
services:
  web:
    build: .
    ports:
      - "8000:8000"
  srv:
    build: .
    ports:
      - "3000:3000"
Run Code Online (Sandbox Code Playgroud)

然后我通过电话srv从内部访问,而不是webhttp://srv:3000/ http://localhost:3000

如何在kubernetes中实现相同的行为?有什么方法可以指定在pods的yaml配置中使用什么名称?

CJ *_*len 13

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

一个pod有自己的IP,因此每个容器内部共享该IP.如果这些容器应该是独立的(即不需要并置),它们应该都在自己的容器中.然后,您可以为每个允许DNS查找的服务定义为来自同一名称空间中的pod的"$ SERVICENAME",或者来自不同名称空间中的pod的"$ SERVICENAME.$ NAMESPACE".


MrE*_*MrE 5

docker-compose 部署单独的容器,将它们链接在一起,以便它们知道彼此的名称和 IP。

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

Pod 用于必须在同一主机上运行且仅在它们之间交互的容器。容器通过本地主机进行内部通信。

大多数Pods实际上是单个容器。

APod使用 与外部通信Services。本质上,Pod 看起来就像是一个容器。

在引擎盖下,一个 Pod 至少有 2 个容器:pause容器管理 Pod 的 IP,然后是你附加的容器。这允许您的容器在不更改 IP 的情况下在 Pod 中崩溃、重新启动和重新链接,允许在不涉及调度程序的情况下管理容器崩溃,并确保 Pod 在其生命周期内保持在单个节点上,因此重新启动速度很快。

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