本文详述了在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
- 安装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)
添加kafka cluster:
查看Message:
基于浏览器Produce message:
参考网址:
Quickstarts
GitHub - provectus/kafka-ui: Open-Source Web UI for Apache Kafka Management
使用Strimzi-Kafka-Operator搭建kafka集群 | 爪哇君-Java技术栈
版权归原作者 xbll263 所有, 如有侵权,请联系我们删除。