【发布时间】:2021-07-27 14:10:24
【问题描述】:
我有一个任务是在 kubernetes 中使用 kafka 创建一个应用程序。但是当我将消费者连接到 kafka 时出现错误:
WARN 1 --- [ntainer#0-0-C-1] org.apache.kafka.clients.NetworkClient : [Consumer clientId=consumer-test-1, groupId=test] 连接到节点 -1 (kafka -service/10.99.233.131:9092) 无法建立。经纪人可能不可用。
WARN 1 --- [ntainer#0-0-C-1] org.apache.kafka.clients.NetworkClient : [Consumer clientId=consumer-test-1, groupId=test] 引导代理 kafka-service:9092 (id: -1 rack: null) 断开连接
这是我的 Kubernetes yaml 文件:
apiVersion: v1
kind: Service
metadata:
name: kafka-service
labels:
name: kafka
spec:
ports:
- port: 9092
targetPort: 9092
protocol: TCP
selector:
name: kafka
---
apiVersion: v1
kind: Service
metadata:
name: zookeeper-service
labels:
name: zookeeper
spec:
ports:
- name: client
port: 2181
protocol: TCP
- name: follower
port: 2888
protocol: TCP
- name: leader
port: 3888
protocol: TCP
selector:
name: zookeeper
type: LoadBalancer
---
apiVersion: v1
kind: Pod
metadata:
name: zookeeper
labels:
name: zookeeper
spec:
containers:
- name: zookeeper
image: zookeeper:3.7.0
---
apiVersion: v1
kind: Pod
metadata:
name: kafka
labels:
name: kafka
spec:
containers:
- name: kafka
image: wurstmeister/kafka:2.13-2.6.0
imagePullPolicy: "IfNotPresent"
env:
- name: KAFKA_ADVERTISED_PORT
value: "666"
- name: KAFKA_ADVERTISED_HOST_NAME
value: localhost
- name: KAFKA_ZOOKEEPER_CONNECT
value: zookeeper-service:2181
- name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
value: INSIDE:PLAINTEXT
- name: KAFKA_ADVERTISED_LISTENERS
value: INSIDE://:666
- name: KAFKA_LISTENERS
value: INSIDE://:666
- name: KAFKA_INTER_BROKER_LISTENER_NAME
value: INSIDE
ports:
- containerPort: 9092
简单的java代码:
@Service
public class Consumer {
@KafkaListener(topics = "new-topic",groupId = "test")
public void consumeMessage(String message){
System.out.println("************************");
System.out.println(message);
System.out.println("************************");
}
}
如何在不扩展测试的情况下创建 kafka 代理?
【问题讨论】:
-
从这里开始strimzi.io
-
无论如何,您似乎误解了您设置的环境变量。
KAFKA_ADVERTISED_LISTENERS优先于KAFKA_ADVERTISED_PORT和主机名。而且由于您已将侦听器端口设置为 666,因此您将无法在客户端中使用 9092 的容器端口
标签: java kubernetes apache-kafka