1

我有多个 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?

谢谢!

4

1 回答 1

3

pod 是否在我的整个网络中获得唯一的 IP?或者只是在集群内/跨集群?

通常,就在集群内。当您设置网络覆盖时,您使用 PodCidr 进行设置,这将是集群中的 pod 网络。您可以有两个具有相同 PodCidr 的集群,并且仍然能够相互通信。一旦流量离开集群和服务器,就可以看到外部 IP。

所以是的,iptables(或取决于覆盖)有一些技巧,使它看起来像是集群内的“本地”,但在集群之外,它只是 IP 路由。

话虽如此,一些网络覆盖允许您将两个或多个集群相互连接。例如,Calico BGP PeeringCillium Multi-cluster

于 2019-01-09T19:24:57.970 回答