说我有2个站点S1,S2;每个人至少都有一个Kubernetes工人。这两个站点在地理位置上是分开的,并且在节点/工作人员上具有不同的公共IP。
kubernetes是否提供任何现有的机制来通过S2从S1中的Pod /容器路由出站互联网流量?
目标是能够将S2中的公共IP用于S1中的Pod。
如果k8s-federation是解决方案的必要条件;那很好。
答案 0 :(得分:1)
Kubernetes没有任何输入,这取决于您的网络设计和结构,就像在传统VM或其他情况下一样。就是说,按照您的描述,这听起来像是一个非常糟糕的网络设计,因此如果设置简单,我会感到惊讶。 Calico在后台运行普通的BGP,因此您可以设置两个AS,并强制其中一个通过另一个AS。
答案 1 :(得分:0)
使用calico,您可以引入非默认IPPool
,该默认值不会对传出流量进行NAT。然后,您可以注释要使用该IPPool.
的pod和/或名称空间
此时,由于群集IP正在“泄漏”到外部世界,因此您将无法使用的传出流量。但是群集和Internet之间的任何上游路由器都不知道返回路径。
您必须让应该在群集和Internet之间的路由器知道群集范围。您可以使用calico的全局BGPPeer
概念。完成此操作后,als将在路由器上设置BGP。 (使用[1])以获取更多信息。
从那里,您应该具有路由器上的所有灵活性,可以根据非默认IPPool
的子网和/或首先通过隧道将其路由到不同位置,例如,到达发问者的'S2
'
请注意,除非您真正使用公共IP空间,即非RFC-1918 IP(以及其他一些IP),否则您现在应该在自己的某个地方引入NAT,您可以选择在S1
或{{ 1}},如果您选择后者,那么该站点还需要知道返回路由器的返回路径。
这并不是真正的云原生解决方案,因为您只是将问题从kubernetes转移到基于固定子网的基于策略路由的“老派”策略域,这实际上不是提问者所要求的,因为他暗示“ S2
”中还有一个kubernetes进程。在上述可能的解决方案中,S2
中不需要k8s进程。
这就是@coderanger的custom outgoing network path for kubernetes pod的建议