kubernets内部的Kakfa代理可以由k8s集群之外的客户端寻址



基本上我在谷歌云上构建一个系统。大多数服务都在k8s集群上工作,但有些代码不是。Lambda和composer的运算符、数据流作业就是例子。(Composer也是k8s,但不同的集群(

我选择kafka作为连接服务的事件通道,我必须决定kafka代理的正确位置。K8s吊舱或VM。我更喜欢k8s pod,但我担心代理和服务之间的通信,尤其是与k8s集群之外的服务之间的沟通。

消费者用";引导服务器";这是某个经纪人的静态唯一地址列表。我想如果代理安装在k8s内部,它们的地址从外部来看将不是静态唯一的。代理是否可以从k8s之外的服务连接?如果可能,必须向引导服务器配置提供哪个字符串?

传统的虚拟机是毫无疑问的解决方案。但我想把越来越多的东西放到K8中。

有不同的解决方案

您可以在K8s集群上部署Kafka,并使用服务网格将两个集群互连。因此,经纪人和服务可以毫无顾虑地相互连接。

如果你在GCP上,你可以使用MCS服务或流量控制器和其他服务网格。

您还可以在VM上设置Kafka,并通过IP公开它,服务将使用它进行连接。

代理是否可以从k8s之外的服务连接?

是的,您可以使用Loadblanacer或Node Port服务类型公开您的Kafka代理。参考文档

我想如果代理安装在k8s中,它们的地址将不是静态的、外部唯一的。

您不需要将Kafka绑定到接口的任何特定主机名,Kafka将监听所有接口,如果在K8s上运行,您可以使用K8s服务公开它。

最新更新