Har*_*G V 4 kubernetes kubernetes-networkpolicy kubernetes-service
允许在相同/不同命名空间中运行的两个 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 通信,但反向通信失败。
请建议我解决这个问题的方法。
wei*_*eld 12
默认情况下,pod 可以通过它们的 IP 地址相互通信,而不管它们在哪个命名空间中。
您可以使用以下命令查看每个 Pod 的 IP 地址:
kubectl get pods -o wide --all-namespaces
Run Code Online (Sandbox Code Playgroud)
但是,集群内通信的正常方式是通过服务资源。
服务还有一个 IP 地址和一个 DNS 名称。服务由一组 pod 支持。服务将请求转发给自己的后备 Pod 之一。
服务的完全限定 DNS 名称是:
<service-name>.<service-namespace>.svc.cluster.local
Run Code Online (Sandbox Code Playgroud)
这可以从集群中的任何地方(不管命名空间)解析为服务的 IP 地址。
例如,如果您有:
ns-a:服务svc-a?一组豆荚 Ans-b:服务svc-b?一组豆荚 B然后集合 A 的一个 pod 可以通过发出以下请求到达集合 B 的一个 pod:
svc-b.ns-b.svc.cluster.local
Run Code Online (Sandbox Code Playgroud)
您可以将Pod放在Services后面并使用Service DNS进行通信。service-name允许同一命名空间中的 Pod 进行通信的调用。service-name.namespace允许不同命名空间中的 Pod 进行通信的调用。
| 归档时间: |
|
| 查看次数: |
8306 次 |
| 最近记录: |