[英]How to connect to Kafka in Kubernetes from outside?
面临的挑战是要创建一个Kafka生产者,该生产者要从该集群外部连接到位于Kubernetes集群中的Kafka集群。 我们有几个RDBMS数据库位于内部,我们想直接将数据流传输到AWS上位于Kubernetes中的Kafka。 我们已经尝试了一些方法并部署了Confluent开源平台,但是到目前为止没有任何效果。 有没有人对这个问题有明确的答案?
您可以看看在Kubernetes内部部署Kafka Connect 。 由于您要从各种RDMBS数据库复制数据,因此需要设置源连接器 ,
源连接器提取整个数据库,并将流表更新更新到Kafka主题。 它还可以将所有应用程序服务器中的指标收集到Kafka主题中,使数据可用于低延迟的流处理。
根据您的源数据库,您必须配置相应的连接器 。
如果您不熟悉Kafka Connect,那么这篇文章可能会非常有帮助,因为它解释了关键概念。
Kafka客户端需要连接到特定节点才能生成或使用消息。
kafka协议可以连接到任何节点以获取元数据。 然后,客户端连接到一个特定的节点,该节点已被选为该客户端要生产/使用的分区的领导者。
每个kafka吊舱必须可单独访问,因此每个吊舱需要一个L4负载平衡器。 可以在kafka配置中设置播发的侦听器配置,以为内部和外部客户端播发不同的IP /主机名。 配置ADVERTISED_LISTENERS EXTERNAL以使用负载平衡器,并配置INTERNAL以使用Pod IP。 内部和外部端口必须不同。
结帐https://strimzi.io/ , https://bitnami.com/stack/kafka , https://github.com/confluentinc/cp-helm-charts
更新:
尝试在运行于AWS EC2的k8中安装kafka。 在合流操作员,bitnami-kafka和strimzi之间,只有strimzi在kafka设置中将EXTERNAL配置为负载均衡器。
bitnami-kafka使用了无头服务,这在k8s网络之外没有用。 Confluent-operator配置为节点的IP,这使得它可以在k8s外部访问,但是可以通过私有IP到达EC2实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.