为什么部署在两个不同命名空间上的 Kube 对象能够相互通信

时间:2021-03-11 12:43:59

标签: kubernetes kubernetes-pod

我是 Kubernetes 的新手,有一个与我正在尝试练习的部署相关的问题。所以这里是场景::

 - I have two namespace :: n1 and n2 
 - I have a curl pod deployed at n1 I
 - have a nginx service of type Nodeport running at n2. My service has  
   exposed a deployment that is managing the pod

My question is, though the two resources are running in two different namespace why is my curl pod running in n1 is able to curl service running at n2 with its IP?ie 

[ k exec curl -n n1 -- curl http://18.108.65.98:8080]
[ k exec curl -n n1 -- curl http://my-nginx.n2:8080 ]

如果是,这是预期的行为,那么为什么在两个不同命名空间中运行的两个服务尝试通信但无法通信时这种行为不同。

Why do we have to then set the RBAC access for them to communicate.

1 个答案:

答案 0 :(得分:1)

无论命名空间如何,pod 都可以通过 IP 相互通信。通常或在现实世界的部署中,Pod 之间通过 Service 进行通信,Service 可以是 CLUSTERIP、NODEPORT 或 LOADBALANCER 类型,具体取决于需求。 Yon 还可以通过其格式为 :-

的 DNS 名称访问服务
<service-name>.<service-namespace>.svc.cluster.local

当部署在两个不同命名空间中的 POD 内运行的两个应用程序尝试进​​行通信时,它们需要具有一组权限来调用某些操作。这些操作是通过 RBAC(基于角色和基于集群)允许和控制的,RBAC 允许运行在两种不同环境中的服务相互通信。