我有一个Kubernetes v1.13集群,其中Calico +法兰绒为CNI。所有节点都有一个可公共(public)路由的ip地址,并且正在运行Ubuntu 16.04。

一些节点位于公司网络中,它们都位于LAN和DMZ中,因此可以访问内部服务,同时仍然可以公开访问。其他的则是在云提供商处托管的VM。

networking - 如何让Kubernetes Pod连接到只能由一部分节点访问的目的地?-LMLPHP

考虑上面的简化示例。我希望Kubernetes Pod可以访问Internal Server C(这只是一台常规服务器,而不是集群的一部分)。我可以仅将Pod强制安排在内部Node B上进行调度,但是由于连接所需的等待时间和带宽都较低,并且Node A上有更多资源,因此我宁愿像其他网关一样使用Node B 。 (考虑几个Node B,因此实际上没有SPOF)。

我当前的方法是将DaemonSet与针对所有内部(B)节点的节点选择器一起使用,从而定义HAProxy Pod。这些HAproxy实例可以作为Kubernetes服务来访问,并将请求转发到内部目标服务。

您是否看到一种更好或更直接的方法来实现从位于任何节点的Pod到只能由节点的子集才能到达的目标的连接?

最佳答案

根据您在这里说的话:



我认为您正在寻找的是Ambassador模式。基本上,您将在B区域中创建这种容器,并且由于它位于集群中,因此您的流量将使用ClusterIP服务去往这些容器/荚。

然后,这些容器将在它们内部运行一个代理(类似于您现在在守护程序中所拥有的),这会将流量透明地路由到您要定位的常规服务器。

其他可能有用的链接可能是this from MSthis slideshows (p.42)

如果不确定这与您已经在运行的软件相比具有很大的优势,我不确定,但是我确实更喜欢只使用Pod,并尽可能地减少其他组件的数量。

关于networking - 如何让Kubernetes Pod连接到只能由一部分节点访问的目的地?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53048484/

10-10 02:38