敬请业界专家大佬不吝指教
发布时间:2025-06-24 17:43:33 作者:北方职教升学中心 阅读量:398
外部生产者侧:
$ ./kafka-console-producer.sh --broker-list 192.168.9.125:31211 --topic test>external kafka test 3>external kafka test 4
外部消费者侧:
$ ./kafka-console-consumer.sh --bootstrap-server 192.168.9.125:31211 --topic test --from-beginningcluster kafka test 1cluster kafka test 2external kafka test 3external kafka test 4
注意:外部消费者能消费到所有数据,包括集群内部测试时生成的数据。敬请业界专家大佬不吝指教。
- 准备外部测试环境
# 安装 JDKyum install java-1.8.0-openjdk# 下载 Kafkacd /srvwget https://downloads.apache.org/kafka/3.7.1/kafka_2.13-3.7.1.tgz# 解压tar xvf kafka_2.13-3.7.1.tgzcd /srv/kafka_2.13-3.7.1/bin
- 获取 Kafka 外部访问配置信息
一共 3个 Kafka Pod,每个 Pod 的
advertised.listeners
配置不同,在 K8s 控制节点,分别执行下面的命令:kubectl exec -n opsxlab -it opsxlab-kafka-controller-0 -- cat /opt/bitnami/kafka/config/server.properties | grep advertised.listenerskubectl exec -n opsxlab -it opsxlab-kafka-controller-1 -- cat /opt/bitnami/kafka/config/server.properties | grep advertised.listenerskubectl exec -n opsxlab -it opsxlab-kafka-controller-2 -- cat /opt/bitnami/kafka/config/server.properties | grep advertised.listeners
正确执行后,输出结果如下 :
$ kubectl exec -n opsxlab -it opsxlab-kafka-controller-0 -- cat /opt/bitnami/kafka/config/server.properties | grep advertised.listenersDefaulted container "kafka" out of: kafka, kafka-init (init)advertised.listeners=CLIENT://opsxlab-kafka-controller-0.opsxlab-kafka-controller-headless.opsxlab.svc.cluster.local:9092,INTERNAL://opsxlab-kafka-controller-0.opsxlab-kafka-controller-headless.opsxlab.svc.cluster.local:9094,EXTERNAL://192.168.9.125:31211$ kubectl exec -n opsxlab -it opsxlab-kafka-controller-1 -- cat /opt/bitnami/kafka/config/server.properties | grep advertised.listenersDefaulted container "kafka" out of: kafka, kafka-init (init)advertised.listeners=CLIENT://opsxlab-kafka-controller-1.opsxlab-kafka-controller-headless.opsxlab.svc.cluster.local:9092,INTERNAL://opsxlab-kafka-controller-1.opsxlab-kafka-controller-headless.opsxlab.svc.cluster.local:9094,EXTERNAL://192.168.9.124:31212$ kubectl exec -n opsxlab -it opsxlab-kafka-controller-2 -- cat /opt/bitnami/kafka/config/server.properties | grep advertised.listenersDefaulted container "kafka" out of: kafka, kafka-init (init)advertised.listeners=CLIENT://opsxlab-kafka-controller-2.opsxlab-kafka-controller-headless.opsxlab.svc.cluster.local:9092,INTERNAL://opsxlab-kafka-controller-2.opsxlab-kafka-controller-headless.opsxlab.svc.cluster.local:9094,EXTERNAL://192.168.9.126:31213
- 外部节点连接 Kafka 测试
跟 K8s 集群内部验证测试过程一样,打开两个终端,运行生产者和消费者脚本。
I have no name!@opsxlab-kafka-client:/$ kafka-console-consumer.sh \ --bootstrap-server opsxlab-kafka.opsxlab.svc.cluster.local:9092 \ --topic test \ --from-beginningcluster kafka test 1cluster kafka test 2external kafka test 3external kafka test 4
免责声明:
- 笔者水平有限,尽管经过多次验证和检查,尽力确保内容的准确性,但仍可能存在疏漏之处。
生产者侧:
I have no name!@opsxlab-kafka-client:/$ kafka-console-producer.sh --broker-list opsxlab-kafka-controller-0.opsxlab-kafka-controller-headless.opsxlab.svc.cluster.local:9092,opsxlab-kafka-controller-1.opsxlab-kafka-controller-headless.opsxlab.svc.cluster.local:9092,opsxlab-kafka-controller-2.opsxlab-kafka-controller-headless.opsxlab.svc.cluster.local:9092 --topic test>cluster kafka test 1>cluster kafka test 2
消费者侧:
I have no name!@opsxlab-kafka-client:/$ kafka-console-consumer.sh \ --bootstrap-server opsxlab-kafka.opsxlab.svc.cluster.local:9092 \ --topic test \ --from-beginningcluster kafka test 1cluster kafka test 2
3.2 k8s 集群外部验证
为了更严谨的测试Kafka 在 K8s 集群外的可用性,我在 K8s 集群外找了一台机器,安装 JDK 和 Kafka。安装方式上 JDK 选择了 Yum 安装
openjdk
,Kafka 则选用了官方提供的二进制包。
- 外部访问安全协议,使用了
PLAINTEXT
,关闭了访问认证,默认值为SASL_PLAINTEXT
。
- 创建测试 Pod
kubectl run opsxlab-kafka-client --restart='Never' --image registry.opsxlab.cn:8443/bitnami/kafka:3.7.1-debian-12-r4 --namespace opsxlab --command -- sleep infinity
- 打开测试 Pod 终端
kubectl exec --tty -i opsxlab-kafka-client --namespace opsxlab -- bash
- 执行命令,生产数据
kafka-console-producer.sh \ --broker-list opsxlab-kafka-controller-0.opsxlab-kafka-controller-headless.opsxlab.svc.cluster.local:9092,opsxlab-kafka-controller-1.opsxlab-kafka-controller-headless.opsxlab.svc.cluster.local:9092,opsxlab-kafka-controller-2.opsxlab-kafka-controller-headless.opsxlab.svc.cluster.local:9092 \ --topic test
- 再打开一个测试 Pod 终端,消费数据
再打开一个终端后,先执行 第 2 步
打开测试 Pod 终端
的命令,然后再执行下面的命令。Bitnami 提供的 Helm chart 以其稳定性和易用性著称,是快速部署 Kafka 到 Kubernetes 集群的理想选择。执行下面的命令验证测试(细节略过,直接上结果)。配置多)- Kafka Helm chart (Bitnami 出品,简单可定制,但是需要花时间成本学习可配置参数)
经过细致的调研、日志持久化配置
- k8s 集群外部访问 Kafka 的方式,NodePort 是否合适?是否需要使用 LoadBalancer、由此引发的任何问题,作者概不负责!
本文由博客一文多发平台 OpenWrite 发布!