赞
踩
本文详述了在kubernetes 1.28.2下安装配置kafka群集及安装配置开源免费的UI for Kafka 图形化web界面管理kafka的步骤。Kafka版本是最新的3.6.1。 本文用于测试环境,如用于生产,请自行调整。
创建命名空间:
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)
添加kafka cluster:
查看Message:
基于浏览器Produce message:
参考网址:
GitHub - provectus/kafka-ui: Open-Source Web UI for Apache Kafka Management
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。