为什么Kubernetes的Kafka要使用无头服务,为什么不使用带负载平衡的集群IP?

为什么Kubernetes的Kafka要使用无头服务,为什么不使用带负载平衡的集群IP?,kubernetes,apache-kafka,load,load-balancing,Kubernetes,Apache Kafka,Load,Load Balancing,我在Kubernetes中遇到的使用Kafka的大多数示例是将其部署为headless服务,但我还无法得到关于为什么它应该是headless而不是集群IP的答案?在我看来,IP提供了负载平衡,在这种情况下,我们可以确保不只是一个代理始终加载其资源,正如我在headless中看到的Kafka客户端(无论是sarma还是java客户端)总是尝试从DNS查找中选择第一个IP并连接到它,如果有大约100多个客户机尝试这样做并打开到第一个IP的连接,这不是一个瓶颈吗?或者Kafka已经处理了这个内置的问题

我在
Kubernetes
中遇到的使用
Kafka
的大多数示例是将其部署为
headless服务
,但我还无法得到关于为什么它应该是headless而不是
集群IP
的答案?在我看来,IP提供了负载平衡,在这种情况下,我们可以确保不只是一个
代理
始终加载其资源,正如我在headless中看到的
Kafka
客户端(无论是sarma还是java客户端)总是尝试从
DNS查找
中选择第一个IP并连接到它,如果有大约100多个客户机尝试这样做并打开到第一个IP的连接,这不是一个瓶颈吗?或者
Kafka
已经处理了这个内置的问题,我仍在试图理解它是如何真正发生的。

当服务的各种实例(为无状态应用程序提供服务的pod的副本)之间没有区别时,您可以在ClusterIP服务下公开它们,因为连接到任何副本以服务于当前请求是可以的。有状态服务(如Kafka、数据库等)并非如此。每个实例负责自己的数据。每个实例可能拥有不同的分区/主题等。服务的实例不是精确的“副本”。在Kubernetes上运行此类有状态服务的解决方案通常使用无头服务和/或有状态集,以便服务的每个实例都具有唯一标识。这种有状态的应用程序通常有自己的集群技术,依赖于集群中具有唯一标识的每个实例

既然您知道了有状态应用程序需要稳定标识的原因,以及带无头服务的statefulset如何提供稳定标识,那么您可以检查您的Kafka发行版如何使用它们在kubernetes上运行Kafka

对于斯特里姆齐用来管理卡夫卡经纪人的州集 您可以使用Kubernetes无头服务为每个吊舱提供 稳定的DNS名称。Strimzi使用这些DNS名称作为广告名称 卡夫卡经纪人的地址。因此,斯特里姆齐:

  • 初始连接是使用常规的Kubernetes服务来完成的 获取元数据

  • 随后的连接将使用DNS打开 另一个无头Kubernetes服务机构给吊舱命名


当服务的各种实例(为无状态应用程序提供服务的pod的副本)之间没有区别时,您可以在ClusterIP服务下公开它们,因为连接到任何副本以服务于当前请求是可以的。有状态服务(如Kafka、数据库等)并非如此。每个实例负责自己的数据。每个实例可能拥有不同的分区/主题等。服务的实例不是精确的“副本”。在Kubernetes上运行此类有状态服务的解决方案通常使用无头服务和/或有状态集,以便服务的每个实例都具有唯一标识。这种有状态的应用程序通常有自己的集群技术,依赖于集群中具有唯一标识的每个实例

既然您知道了有状态应用程序需要稳定标识的原因,以及带无头服务的statefulset如何提供稳定标识,那么您可以检查您的Kafka发行版如何使用它们在kubernetes上运行Kafka

对于斯特里姆齐用来管理卡夫卡经纪人的州集 您可以使用Kubernetes无头服务为每个吊舱提供 稳定的DNS名称。Strimzi使用这些DNS名称作为广告名称 卡夫卡经纪人的地址。因此,斯特里姆齐:

  • 初始连接是使用常规的Kubernetes服务来完成的 获取元数据

  • 随后的连接将使用DNS打开 另一个无头Kubernetes服务机构给吊舱命名


每个实例可能拥有不同的分区/主题等
-您能解释一下吗?为什么可能?这意味着它不是强制性的,我们无论如何都可以从任何代理中发现分区/主题?抱歉,我不知道,但我想进一步了解这一点,因为早些时候,Kafka的群集IP在50多个消费者和生产者中一切正常,现在在看到无头服务的使用后,我有点困惑,到底有没有这一点。这是一个关于为什么有状态应用程序可能需要的一般性陈述每个副本的唯一标识。您需要了解特定的卡夫卡发行版是如何实现的。你用什么在库伯内特斯上安装卡夫卡?赫尔姆是用来在库伯内特斯上安装卡夫卡的,如果问题是这样的话?有3个代理,复制系数为3以确保可用性。
每个实例可能拥有不同的分区/主题等
-您能对此进行详细解释吗?为什么可能?这意味着它不是强制性的,我们无论如何都可以从任何代理中发现分区/主题?抱歉,我不知道,但我想进一步了解这一点,因为早些时候,Kafka的群集IP在50多个消费者和生产者中一切正常,现在在看到无头服务的使用后,我有点困惑,到底有没有这一点。这是一个关于为什么有状态应用程序可能需要的一般性陈述每个副本的唯一标识。您需要了解特定的卡夫卡发行版是如何实现的。你用什么在库伯内特斯上安装卡夫卡?赫尔姆是用来在库伯内特斯上安装卡夫卡的,如果问题是这样的话?有3个代理,复制系数为3以确保可用性。