【发布时间】:2021-01-04 01:55:51
【问题描述】:
如果我有 2 个 pod,是否有办法让它们在不创建和使用任何其他资源的情况下相互交谈?
问题适用于这两种情况——它们是在同一个命名空间中还是在不同的命名空间中。
【问题讨论】:
-
谢谢,但仍然没有回答我的问题。我想弄清楚我是否可以直接做 pod-pod。不涉及其他资源。我只是想证明一个观点,不会在生产中使用它,所以不寻找最佳实践:)
标签: kubernetes
如果我有 2 个 pod,是否有办法让它们在不创建和使用任何其他资源的情况下相互交谈?
问题适用于这两种情况——它们是在同一个命名空间中还是在不同的命名空间中。
【问题讨论】:
标签: kubernetes
是的,他们可以!
假设您没有任何限制调用的网络策略,它只需要知道它的 DNS 名称,这就是它的工作原理:
以上场景假设您没有在 pod 中设置主机名和子域,并且使用默认配置。
在更高级的场景中,您还可以使用集群 dns 后缀来调用这些服务。以下文档更详细地描述了所有内容 https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
【讨论】:
我对你的问题的回答是肯定的......有多个问题可以与 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