关于镜像的选择

目前kafka有很多docker镜像,下面这几个比较常见:

  1. confluent/cp-kafka 这个是kafka的官方镜像,rancher应用商城中默认也是这个kafka镜像。

  2. bitnami/kafka:2.3.0,这个镜像更新速度很快,持久化数据放在/bitnami/kafka,约定好的,不需要环境变量。带了apt可以装软件,rancher部署名称也可以叫kafka。目前我选择这个镜像做了个kafka应用。

  3. wurstmeister/kafka:2.12-2.3.0 跟bitnami比较过后,可以不用这个镜像了。它不带yum或apt工具,部署名称不能叫kafka,解决方案是加一个环境变量KAFKA_PORT 值为9092。这个镜像比bitnami更新慢,体积还更大。默认也没有持久化数据。所以这个镜像不再用了。

bitnami/kafka配置

目前已经制作成heml应用商城了:https://code.pugwoo.com/pugwoo/helm-charts.git

如果是在rancher中页面手工部署的话,需要配置环境变量:

ALLOW_PLAINTEXT_LISTENER=yes # 处于安全考虑,默认是关闭的
KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.100.99.41:39092 # 外部暴露的ip端口
KAFKA_BROKER_ID=1
KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 # 这个好像可以不用
KAFKA_ZOOKEEPER_CONNECT=10.100.99.41:32181

关于容器集群下跨namespace且使用内部service name的方式的问题

假设kafka部署在命名空间namespace-a下,service叫mykafka,默认情况它会注册为地址为mykafka的服务,这个在跨命名空间是访问不到的。所以需要增加一个环境命令:

KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://mykafa.namespace-a:9092

其实这个问题和内网映射为外网道理是一样的。

更新说明:这个问题在新版的kafka镜像中好像没有了,现在新版的会注册为完整的域名,不再只是service名称。

文档更新时间: 2020-07-27 13:18   作者:nick