Kubernetes 卡夫卡/库伯内特斯与自动缩放

Kubernetes 卡夫卡/库伯内特斯与自动缩放,kubernetes,apache-kafka,Kubernetes,Apache Kafka,我有一个关于卡夫卡在库伯内特斯的问题,特别是自动缩放 假设我在Kubernetes的3个pod中有3个Kafka代理,有一个TopicA,有5个分区(P1、P2、P3、P4、P5),复制因子为3,所有代理都有它们的持久卷,我在Kubernetes中配置了自动伸缩,所以如果它检测到,假设卡夫卡播客中的CPU/内存使用率为%80,它将为卡夫卡代理启动额外的播客 如果我没有完全错的话,卡夫卡会检测到超过Zookeeper的额外实例,并可以移动分区(比如说P1、P2在Broker1和P3,P4在Brok

我有一个关于卡夫卡在库伯内特斯的问题,特别是自动缩放

假设我在Kubernetes的3个pod中有3个Kafka代理,有一个TopicA,有5个分区(P1、P2、P3、P4、P5),复制因子为3,所有代理都有它们的持久卷,我在Kubernetes中配置了自动伸缩,所以如果它检测到,假设卡夫卡播客中的CPU/内存使用率为%80,它将为卡夫卡代理启动额外的播客

如果我没有完全错的话,卡夫卡会检测到超过Zookeeper的额外实例,并可以移动分区(比如说P1、P2在Broker1和P3,P4在Broker2,P5在Broker3),所以会出现一个新的Pod。我预计会出现类似以下情况:P1在Broker1,P3,P4在Broker2,P5在Broker3,P2在Broker4

所以我的第一个问题是,上述假设是否正确,卡夫卡的行为是否如此

第二个问题是关于向下扩展,让负载峰值消失,我们不需要Pod4,Kubernetes是否可以向下搜索Pod,Kafka是否可以返回到3代理配置,这是我不确定的部分。虽然我有复制因子3,但其他两个代理应该能够继续工作,kann Kafka是否将分区P2拉到代理1或2或3

最后一个问题是,如果Kubernetes产生了5,6,7个吊舱,我们能再次缩小到3个吊舱的配置吗

谢谢你的回答

Kafka将检测超过Zookeeper的额外实例,并可以移动分区

扩展群集时,分区将不会重新平衡

在缩小规模的情况下,必须先将分区从代理中移出,然后才能将其从集群中移除,否则您将拥有无法复制的永久脱机分区。当缩小集群时,需要注意磁盘利用率,因为分区的大小受到最小数据目录的限制


Kubernetes本身不会帮助Kafka执行这些操作,在非k8s环境中,此过程主要是手动的,但可以编写脚本(参见Datadog提供的Kafka工具包)。我相信k8s运营商,如Strimzi运营商,在缩放时可以使数据重新平衡更容易,但是在回答这个问题时,它不支持自动重新分配,正如我所看到的,Strimzi 0.18.0现在本机支持巡航控制,这意味着您可以完全执行自动重新平衡过程,包括分区重新分配

现在,您可以在Kubernetes中正确地自动缩放卡夫卡:)

这应该可以回答您的问题:)