允许在相同/不同命名空间中运行的两个 pod(例如 pod A 和 B)进行通信,而不管协议(例如 http、https、akka.tcp)以及应用的有效网络策略如何。
尝试过的解决方案:
尝试将网络策略应用于两个 pod,并使用服务名称:“my-svc.my-namespace.svc.cluster.local”来创建 pod B
与运行服务“my-svc”的 pod A 通信,但两者
无法沟通。
还尝试在部署时在 pod B 中添加 pod A 的 IP 地址和主机映射,然后 pod B 能够与 pod A 通信
但反向通信失败。
请建议我一种解决此问题的方法。
默认情况下,Pod 可以通过 IP 地址相互通信,无论它们位于哪个命名空间。
您可以使用以下命令查看每个 pod 的 IP 地址:
kubectl get pods -o wide --all-namespaces
然而,集群内通信的正常方式是通过服务资源。
服务还有一个 IP 地址和一个 DNS 名称。服务由一组 pod 支持。该服务将对其自身的请求转发到其中一个支持 Pod。
服务的完全限定 DNS 名称是:
<service-name>.<service-namespace>.svc.cluster.local
这可以从集群中的任何位置解析为服务的 IP 地址(无论命名空间如何)。
例如,如果您有:
- 命名空间
ns-a
: 服务svc-a
→ 吊舱 A 组
- 命名空间
ns-b
: 服务svc-b
→ 吊舱 B 组
然后,集合 A 的 pod 可以通过发出以下请求来到达集合 B 的 pod:
svc-b.ns-b.svc.cluster.local
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)