【问题标题】:How to access another container in a pod如何访问 pod 中的另一个容器
【发布时间】:2018-04-06 15:49:47
【问题描述】:

我已经建立了一个由多个相互关联的微服务组成的多容器 pod。在 docker-compose 上,如果我想访问 compose 中的另一个容器,我只需使用服务的名称。

我正在尝试对 Kube 做同样的事情,而不必为每个微服务创建一个 pod。

我尝试了容器的名称或带有.local 的后缀,但都没有成功,我得到了一个 UnknownHostException。

我的偏好也是让所有微服务在端口 80 上运行,但如果这在单个 pod 中不起作用,我还尝试让每个微服务在其自己的端口上运行并使用localhost,但这并没有工作要么它只是说连接被拒绝(而不是未知主机)

【问题讨论】:

  • pod 内的容器共享一个 IP 地址和端口空间,并且可以通过 localhost 找到彼此。它们还可以使用标准的进程间通信(如 SystemV 信号量或 POSIX 共享内存)相互通信。不同 pod 中的容器具有不同的 IP 地址,无法通过 IPC 进行通信。 kubernetes.io/docs/concepts/workloads/pods/pod
  • 这听起来不对,因为我所有的容器都在端口 80 上运行,它们应该被隔离对吧?
  • 当然,在这种情况下,您需要为您的服务创建不同的 pod 或更改任何容器上的端口
  • 因此,如果一切都在一个端口上,则每个容器需要一个 pod。好的,我只是尝试将每个容器都作为自己的端口。仍然无法正常工作,但至少 localhost 可以解决
  • 如果您在一个 POD 中拥有所有容器。您应该可以使用localhost:port 访问

标签: kubernetes


【解决方案1】:

pod 中的应用程序都使用相同的网络命名空间(相同的 IP 和端口空间),因此可以“找到”彼此并使用 localhost 进行通信。因此,Pod 中的应用程序必须协调它们对端口的使用。

https://kubernetes.io/docs/concepts/workloads/pods/pod/#resource-sharing-and-communication

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 2023-02-24
    • 1970-01-01
    • 2020-05-04
    相关资源
    最近更新 更多