Kafka无法对外暴露端口的相关解决方案

背景:客户的kafka组件部署时没有对外暴露端口,导致客户不能通过Kafka消费数据。 解决办法 1.检查是否kafka对外有端口露出

[root@k8s-master-01 ~]# kubectl get svc -A | grep kafka default kafka NodePort 10.107.226.247 <none> 9092:30092/TCP 125d default kafka-exporter-prometheus-kafka-exporter ClusterIP 10.111.246.55 <none> 9308/TCP 125d default kafka-headless ClusterIP None <none> 9092/TCP,9093/TCP 125d

2.修改镜像仓库 vim install/servers/kafka/kafka/values.yaml

image: registry: docker.io repository: bitnami/kubectl tag: 1.19.15-debian-10-r39

3.添加如下kafka脚本配置

此段需覆盖原有配置项

helm $status -n ${KAFKA_NAMESPACE} --set zookeeper.enabled=false --set replicaCount=${KAFKA_REPLICA} --set persistence.storageClass="kafka-storage" --set service.type=NodePort --set service.nodePorts.client="30092" --set externalAccess.enabled=true --set externalAccess.service.type=NodePort --set externalAccess.autoDiscovery.enabled=true --set rbac.create=true --set externalAccess.service.nodePorts[0]="30190" --set externalAccess.service.nodePorts[1]="30191" --set externalAccess.service.nodePorts[2]="30192" --set externalZookeeper.servers=zookeeper.${KAFKA_NAMESPACE}.svc.cluster.local --set ${helm_set_string} -f $CMD/servers/kafka/kafka/values.yaml kafka $CMD/servers/kafka/kafka/ }

注:此段需覆盖原有配置项 4.执行kafka更新 bash install/main_install.sh update kafka 5.检查

[root@k8s-master-01 ~]# kubectl get svc -A | grep kafka default kafka NodePort 10.109.166.120 <none> 9092:30092/TCP,9094:31243/TCP 8h default kafka-0-external NodePort 10.103.113.68 <none> 9094:30190/TCP 150m default kafka-1-external NodePort 10.111.216.115 <none> 9094:30191/TCP 150m default kafka-2-external NodePort 10.108.65.222 <none> 9094:30192/TCP 150m default kafka-headless ClusterIP None <none> 9092/TCP,9093/TCP 8h

备注: 经过本地测试,此方法仅可保留kafka历史存量数据,对于新进入的数据无法存留,所以,请选择数据流量少的时间进行更新,更新的时间大概约2分钟左右。

经验分享 程序员 微信小程序 职场和发展