我有多个Kubernetes集群。它们都在“同一网络”上-也就是说,网络上还有其他服务器/服务,以便所有群集中的所有Pod都可以访问这些服务器/服务。
我知道每个Pod都有一个唯一的IP,因此所有Pod都可以使用这些IP直接相互通信。但是(这里是我的问题)-pod在我整个网络中是否获得唯一的IP?还是只是跨集群/跨集群?
这个问题的原因是-我可以让所有群集对Pod使用相同的网络范围吗? 也就是说,这种设计是否正确:
DESIGN A
CLUSTER 1
Pod1.1 10.0.0.1
Pod1.1 10.0.0.2
...
Pod1.1 10.0.0.n
CLUSTER 2
Pod2.1 10.0.0.1
Pod2.1 10.0.0.2
...
Pod2.1 10.0.0.n
或者,我是否需要像这样:
DESIGN B
CLUSTER 1
Pod1.1 10.0.0.1
Pod1.1 10.0.0.2
...
Pod1.1 10.0.0.n
CLUSTER 2
Pod2.1 10.0.1.1
Pod2.1 10.0.1.2
...
Pod2.1 10.0.1.n
提出此问题的另一种方法:
当Pod1.1调用集群的外部 网络服务器时,它是否将自身通告为10.0.0.1?还是作为kubernetes处理并映射回10.0.0.1的某些NAT IP?
谢谢!
答案 0 :(得分:3)
广告连播在我的整个网络中都获得唯一的IP吗?还是只是跨集群/跨集群?
通常,仅在群集内。设置网络覆盖时,可以使用PodCidr对其进行设置,这将成为群集中的Pod网络。您可能有两个具有相同PodCidr的群集,但仍然能够相互通信。一旦流量离开群集和服务器,就可以通过外部IP看到。
所以,是的,iptables有一些诡计(或依赖于覆盖),使它看起来像是群集中的“本地”,而在群集之外,它只是IP路由。
话虽如此,某些网络覆盖层使您可以将两个或多个集群相互连接。例如Calico BGP Peering和Cillium Multi-cluster。