【问题标题】:Can a pod directly call another pod?一个pod可以直接调用另一个pod吗?
【发布时间】:2021-01-04 01:55:51
【问题描述】:

如果我有 2 个 pod,是否有办法让它们在不创建和使用任何其他资源的情况下相互交谈?

问题适用于这两种情况——它们是在同一个命名空间中还是在不同的命名空间中。

【问题讨论】:

  • 谢谢,但仍然没有回答我的问题。我想弄清楚我是否可以直接做 pod-pod。不涉及其他资源。我只是想证明一个观点,不会在生产中使用它,所以不寻找最佳实践:)

标签: kubernetes


【解决方案1】:

是的,他们可以!

假设您没有任何限制调用的网络策略,它只需要知道它的 DNS 名称,这就是它的工作原理:

  • 集群必须启用 DNS
  • 如果 Pod 是在同一个命名空间上手动创建的(不是通过部署),您只需调用充当主机的 Podname。
    • 在命名空间 NS1 上运行的 POD1 暴露了容器端口 31333
    • 在命名空间 NS1 上运行的 POD2
    • POD2 通过http://POD1:31333 调用 POD1
  • 如果 pod 位于不同的命名空间中,则需要将命名空间包含到主机中。
    • 在命名空间 NS1 上运行的 POD1 暴露了容器端口 31333
    • 在命名空间 NS2 上运行的 POD2
    • POD2 通过http://POD1.NS1:31333 调用 POD1
  • 如果 Pod 是由部署创建的,它的名称是动态的,很难预测,在这种情况下,您需要一个服务来使用一个通用名称(服务)将 Pod 公开给其他人
    • 部署到命名空间 NS1 的 DEPLOYMENT1 将创建一个具有以下格式的 pod deploymentname-hash(例如:DEPLOYMENT1-f82hsh)
    • DEPLOYMENT1-f82hsh 是部署创建的 pod,在命名空间 NS1 上运行,创建时暴露了容器端口 31333
    • 在命名空间 NS2 上运行的 POD2
    • POD2 可以通过 http://DEPLOYMENT1-f82hsh.NS1:31333 调用 DEPLOYMENT1-f82hsh,但由于名称是动态的,因此它随时可能更改为其他名称并破坏 POD2
    • 解决方案是部署服务 SVC1,将请求转发到 DEPLOYMENT1 pod
    • POD2 然后调用http://SVC1:31333,它将呼叫转发到 DEPLOYMENT1-f82hsh 或 DEPLOYMENT1 中可用的任何 pod。

以上场景假设您没有在 pod 中设置主机名和子域,并且使用默认配置。

在更高级的场景中,您还可以使用集群 dns 后缀来调用这些服务。以下文档更详细地描述了所有内容 https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/

【讨论】:

  • 所以我想我正在运行的集群有一些限制,因为一个 pod 无法解析另一个 pod 的名称。无论如何,谢谢你的信息。
  • 检查 DNS 是否已启动并运行,还尝试附加到其中一个容器并尝试通过其 IP 调用另一个容器,如果您不能这样做,则说明有问题阻止了一个与对方交谈。
【解决方案2】:

我对你的问题的回答是肯定的......有多个问题可以与 ShreePrakash 给你的服务一样,同样的问题也可以应用于 pod。

这是另一个相关的问题:2 Kubernetes pod communicating without knowing the exposed address

这回答了您的问题,因为您应该能够对 PODNAME.PODNAMESPACE:PORT 做同样的事情并且它应该可以工作。

现在为什么没有完成?仅仅因为 pod 在创建时在其名称中添加了一个随机 ID(例如:nginx-ingress-1234456),并且如果它崩溃并重新创建,名称将不一样。这适用于无状态的应用程序,你也许可以只用一个 pod 来扣除有状态的 pod 的名称......

这就是为什么使用服务来更容易定位 pod,因为它们的名称是您在创建时声明的名称。

希望这会有所帮助。

【讨论】:

  • Ports: 8153/TCP, 8154/TCP, Host Ports: 0/TCP, 0/TCP。这是我的 pod 配置,我无法从同一命名空间内的另一个 pod 或另一个 pod 访问它。当我卷曲它时,我得到cannot resolve host。我应该有主机端口吗?
  • curl my-pod-5678b96b44-flbhk.myns:8153
猜你喜欢
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 2019-12-16
  • 1970-01-01
  • 2015-06-01
  • 2020-08-05
相关资源
最近更新 更多