Code-Life icon indicating copy to clipboard operation
Code-Life copied to clipboard

k8s 部署 kafka

Open Draymonders opened this issue 4 years ago • 6 comments

  • kafka依赖zookeeper
  • 所以也要部署zookeeper

Draymonders avatar Apr 28 '20 03:04 Draymonders

部署顺序是 先zookeeper-servicekafka-service

然后部署zookeeper-deploymentkafka-deployment

Draymonders avatar Apr 28 '20 03:04 Draymonders

中间遇到的问题

kafka env配置

  • KAFKA_ADVERTISED_HOST_NAME 是指kafka对外访问的地址 此处应该传kafka-service暴露的cluster-ip

  • KAFKA_ZOOKEEPER_CONNECT 是指zookeeper的地址

部署完以后一直报错 CrashBack

然后就不知所措了, 持续了一天 然后通过kubectl describe pod kafka-xxxx,看到了containerId, 来到了擅长的docker, 遂docker logs contianerId

发现错误如下

org.apache.kafka.common.config.ConfigException: Invalid value tcp://10.102.205.143:9092 for configuration port: Not a number of type INT
	at org.apache.kafka.common.config.ConfigDef.parseType(ConfigDef.java:726)
	at org.apache.kafka.common.config.ConfigDef.parseValue(ConfigDef.java:474)
	at org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:467)
	at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:108)
	at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:142)
	at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:1119)
	at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:1122)
	at kafka.server.KafkaConfig$.fromProps(KafkaConfig.scala:1102)
	at kafka.server.KafkaServerStartable$.fromProps(KafkaServerStartable.scala:34)
	at kafka.server.KafkaServerStartable$.fromProps(KafkaServerStartable.scala:29)
	at kafka.Kafka$.main(Kafka.scala:68)
	at kafka.Kafka.main(Kafka.scala)

报错是 portint, 但是传入了tcp://10.102.205.143:9092

经过查询, 发现如这里所说 https://github.com/wurstmeister/kafka-docker/issues/122

Seems that if you have service called kafka, kubernetes creates environment variable called KAFKA_PORT="tcp://x.x.x.x:9092"

就是部署了一个servicekafka 然后环境变量里面kakfa-port: tcp://x.x.x.x:9092导致的问题

解决方案

知道了问题所在, 把kafka-servicename从原来的kafka换成了kafka-xxx

问题解决

Draymonders avatar Apr 28 '20 03:04 Draymonders

测试是否部署成功

1. 安装KafkaCat

sudo apt-get install kafkacat

2. 建立生产者关联对应 topic

kafkacat -b ${kafka_service_ip:port} -t ${topic_name} -p

3. 建立消费者关联对应 topic

新开一个terminal

kafkacat -b ${kafka_service_ip:port} -t ${topic_name}

4. 在生产者处随便输入, 看消费者端能否接收到信息

如果能接收到输入的信息,那么部署成功.

Draymonders avatar Apr 28 '20 05:04 Draymonders

在k8s中使用kafka做实验,刚好解决我的遇到的“ Not a number of type INT ”问题,感谢分享。

492162921 avatar Mar 11 '21 07:03 492162921