首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes上的卡夫卡图表:简单的测试字符串产生+消费

Kubernetes上的卡夫卡图表:简单的测试字符串产生+消费
EN

Stack Overflow用户
提问于 2018-08-08 00:54:24
回答 1查看 849关注 0票数 0

我安装了孵化器卡夫卡图表。撰写本文时的kafka-0.8.5版本。

代码语言:javascript
复制
helm install --name kafka \
  --set replicas=1 \
  --set persistence.enabled=false \
  --set zookeeper.replicaCount=1 \
  incubator/kafka

为了尝试这一点,我运行了一个单独的pod作为一个带有Kafka cli工具的bash shell。我使用的是与kafka-0 pod完全相同的Docker镜像confluentinc/cp-kafka:4.1.1-2,以便在客户端和服务器之间有一个完美的版本匹配:

代码语言:javascript
复制
kubectl run shell --rm -i --tty --image confluentinc/cp-kafka:4.1.1-2 -- /bin/bash

列出主题、发布消息、获取主题偏移量都能完美地工作,如下所示。但是,当我尝试运行kafka-console-consumer并查看主题中的测试记录时,它无限期地挂起。为什么?

代码语言:javascript
复制
root@shell-5c6ddf5d99-tbsvm:/# /usr/bin/kafka-topics --zookeeper kafka-zookeeper:2181 --list

__confluent.support.metrics

root@shell-5c6ddf5d99-tbsvm:/# echo "abcxyz" | /usr/bin/kafka-console-producer --broker-list kafka:9092 --topic test-topic

>[2018-08-07 16:43:26,110] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 1 : {test-topic=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)

root@shell-5c6ddf5d99-tbsvm:/# /usr/bin/kafka-topics --zookeeper kafka-zookeeper:2181 --list

__confluent.support.metrics
test-topic

root@shell-5c6ddf5d99-tbsvm:/# /usr/bin/kafka-run-class kafka.tools.GetOffsetShell --broker-list kafka:9092 --topic test-topic --time -1

test-topic:0:1

root@shell-5c6ddf5d99-tbsvm:/# /usr/bin/kafka-console-consumer --bootstrap-server kafka:9092 --from-beginning --topic test-topic

<hangs indefinitely>

仅供参考,这是一个本地minikube开发集群,带有Kubernetes 1.10.x服务器端和1.10.x kubectl客户端工具的最新minikube。这是一个干净的,新的minikube,除了kafka,kafka-zookeeper和我的shell pod,没有其他东西在运行。

此外,编写一个小型Java客户端测试应用程序进行消费也会得到类似的结果,即无限期轮询,而不会有任何消息。当我的客户机订阅test-topic时,它永远不会收到分配给一个主题分区的通知回调。

EN

回答 1

Stack Overflow用户

发布于 2018-08-08 02:39:02

这花了我几个小时的时间,有一个bug in minikube阻止卡夫卡工作。

我不熟悉Helm部署,但您必须确保两件事。首先,Kafka通告的主机必须与您的Kubernetes服务IP (或kube DNS中的dns名称)相同,其次,您必须将minikube的网络接口设置为混杂模式:

代码语言:javascript
复制
minikube ssh sudo ip link set docker0 promisc on

如果不这样做,kafka就不能通过Kubernetes服务来满足自己,它的领导人选举就会失败。我发现它在容器部署环境中非常脆弱。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51731858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档