kafka配置外部连接

背景

我的kafka是在k8s中以statefulset形式部署的,现在需要外部控制台访问。

方法

修改statefulset,需要配置下面的环境变量,添加EXTERNAL地址。

KAFKA_CFG_LISTENERS中也要添加,否则会报错:advertised.listeners listener names must be equal to or a subset of the ones defined in listeners. Found PLAINTEXT,EXTERNAL. The valid options based on the current configuration are PLAINTEXT

env:
            - name: TZ
              value: Asia/Shanghai
            # 连接zk的地址
            - name: KAFKA_CFG_ZOOKEEPER_CONNECT
              value: zk-svc:2181
            # 必须设置通告地址:端口, 就是外部连接kafka的地址,这里是指定pod的fqdn,记得修改为你的pod地址
            - name: KAFKA_CFG_ADVERTISED_LISTENERS
              value: "PLAINTEXT://kafka-0.kafka-headless.test.svc.cluster.local:9092,EXTERNAL://1.2.3.4:12345"
            - name: KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP
              value: "PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT"
            - name: KAFKA_CFG_INTER_BROKER_LISTENER_NAME
              value: "PLAINTEXT"
            # 内部监听地址,默认就是PLAINTEXT://:9092
            - name: KAFKA_CFG_LISTENERS
              value: "PLAINTEXT://:9092,EXTERNAL://0.0.0.0:31090"
            # 这里设置不加密, 否则你得配置加密,要不然会报错
            - name: ALLOW_PLAINTEXT_LISTENER
              value: "true"

配置kafka nodeport,这里的targetPort不能为9092,否则KAFKA_CFG_LISTENERS会报错端口冲突。

apiVersion: v1
kind: Service
metadata:
  name: kafka-nodeport
  namespace: test
spec:
  ports:
  - name: kafka
    port: 9092
    protocol: TCP
    targetPort: 12345
    nodePort: 12345
  selector:
    app: kafka
  sessionAffinity: None
  type: NodePort

使用offset explorer,不需要配置zk,配置如下:

file

0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
最旧
最新 最多投票
内联反馈
查看所有评论

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部
0
希望看到您的想法,请您发表评论x