本文详述了在kubernetes 1.28.2下安装配置kafka群集及安装配置开源免费的UI for Kafka 图形化web界面管理kafka的步骤。Kafka版本是最新的3.6.1。 本文用于测试环境,如用于生产,请自行调整。

安装Kafka-Operator

创建命名空间:

kubectl create namespace kafka

下载https://strimzi.io/install/latest?namespace=kafka并重命名为kafka-install.yaml,执行安装

kubectl create -f kafka-install.yaml -n kafka

创建kafka集群

下载https://strimzi.io/examples/latest/kafka/kafka-persistent-single.yaml

以下红色的是修改或增加的内容:(增加了namespace, 增加了nodePort和修改了storage class的名称,本测试环境使用了Minio的CSI的directpv-min-io作为storage class)

apiVersion: kafka.strimzi.io/v1beta2

kind: Kafka

metadata:

  name: my-cluster

  namespace: kafka

spec:

  kafka:

    version: 3.6.1

    replicas: 3

    listeners:

      - name: plain

        port: 9092

        type: internal

        tls: false

      - name: tls

        port: 9093

        type: internal

        tls: true

      - name: external # 增加外部访问用的listener

        port: 9094 #端口

        type: nodeport # nodeport类型

        tls: false

        configuration:

          bootstrap:

            nodePort: 32094 # 指定nodeport端口,不指定会随机分配

    config:

      offsets.topic.replication.factor: 1

      transaction.state.log.replication.factor: 1

      transaction.state.log.min.isr: 1

      default.replication.factor: 1

      min.insync.replicas: 1

      inter.broker.protocol.version: "3.6"

    storage:

      type: jbod

      volumes:

      - id: 0

        type: persistent-claim

        size: 1Gi

        class: directpv-min-io   

        deleteClaim: false       

  zookeeper:

    replicas: 3

    storage:

      type: persistent-claim

      size: 1Gi

      class: directpv-min-io

      deleteClaim: false

  entityOperator:

    topicOperator: {}

    userOperator: {}

kubectl apply -f kafka-persistent-single.yaml

kubectl get pod -n kafka

kubectl get svc -n kafka

 kubectl get deploy -n kafka

生产数据:

kubectl -n kafka run kafka-producer -ti \

--image=quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 \

--rm=true --restart=Never -- bin/kafka-console-producer.sh \

--bootstrap-server my-cluster-kafka-bootstrap:9092 \

--topic my-topic

消费数据:

kubectl -n kafka run kafka-consumer -ti \

--image=quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 \

--rm=true --restart=Never \

-- bin/kafka-console-consumer.sh \

--bootstrap-server my-cluster-kafka-bootstrap:9092 \

--topic my-topic --from-beginning

也可以手工进入container内部运行命令,下面以生产数据为例:

kubectl get pod kafka-producer -o jsonpath='{.spec.containers[*].name}' -n kafka

查询到container名称也为:kafka-producer

kubectl exec -it kafka-producer -n kafka -c kafka-producer -- /bin/sh

cd bin

手工生产数据:

./kafka-console-producer.sh --bootstrap-server my-cluster-kafka-bootstrap:9092 --topic my-topic

2. 安装UI for Kafka:

Github网址:

GitHub - provectus/kafka-ui: Open-Source Web UI for Apache Kafka Management

临时测试:

docker run -it -p 8080:8080 -e DYNAMIC_CONFIG_ENABLED=true provectuslabs/kafka-ui

永久运行:

vi ui-kafka.yml内容如下:

services:

kafka-ui:

container_name: kafka-ui

image: provectuslabs/kafka-ui:latest

ports:

- 8080:8080

environment:

DYNAMIC_CONFIG_ENABLED: true

volumes:

- ~/kui/config.yml:/etc/kafkaui/dynamic_config.yaml

创建目录及文件:

mkdir kui

cd kui

touch config.yml

chmod 777 config.yml

mkdir -p /etc/kafkaui

touch /etc/kafkaui/dynamic_config.yaml

chmod 777 /etc/kafkaui/dynamic_config.yaml

cd ~

启动 ui-kafka container:

docker-compose -f ui-kafka.yml up -d

查看启动的container:

docker container ls|grep kafka

然后在浏览器运行:(192.168.249.10是kubernetes cluster的master node的ip)

http://192.168.249.10:8080/

添加kafka cluster:

查看Message:

基于浏览器Produce message:

参考网址:

Quickstarts

GitHub - provectus/kafka-ui: Open-Source Web UI for Apache Kafka Management

使用Strimzi-Kafka-Operator搭建kafka集群 | 爪哇君-Java技术栈

精彩文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: