Code-Life
Code-Life copied to clipboard
k8s 部署 kafka
-
kafka
依赖zookeeper
- 所以也要部署
zookeeper
部署顺序是 先zookeeper-service
和kafka-service
然后部署zookeeper-deployment
和kafka-deployment
中间遇到的问题
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)
报错是 port
是int
, 但是传入了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"
就是部署了一个service
叫kafka
然后环境变量里面kakfa-port: tcp://x.x.x.x:9092
导致的问题
解决方案
知道了问题所在, 把kafka-service
的name
从原来的kafka
换成了kafka-xxx
问题解决
测试是否部署成功
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. 在生产者处随便输入, 看消费者端能否接收到信息
如果能接收到输入的信息,那么部署成功.
在k8s中使用kafka做实验,刚好解决我的遇到的“ Not a number of type INT ”问题,感谢分享。