【发布时间】:2019-01-15 13:04:32
【问题描述】:
我在 Kubernetes 上有一个 Kafka 设置,两个代理在两个服务上运行。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kafka-service NodePort 10.101.47.36 <none> 9092:32132/TCP 2h
kafka-service2 NodePort 10.110.151.216 <none> 9092:32133/TCP 2h
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 1d
zoo1 ClusterIP 10.105.248.153 <none> 2181/TCP,2888/TCP,3888/TCP 2h
这两个都是分别暴露在 32132 和 32133 端口上的节点端口。
我使用以下规范创建了集群:
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: kafka-broker1
spec:
template:
metadata:
labels:
app: kafka
id: "1"
spec:
containers:
- name: kafka
image: wurstmeister/kafka
ports:
- containerPort: 9092
env:
- name: KAFKA_ADVERTISED_PORT
value: "32133"
- name: KAFKA_ADVERTISED_HOST_NAME
value: localhost
- name: KAFKA_ZOOKEEPER_CONNECT
value: zoo1:2181
- name: KAFKA_BROKER_ID
value: "1"
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: kafka-broker2
spec:
template:
metadata:
labels:
app: kafka
id: "1"
spec:
containers:
- name: kafka
image: wurstmeister/kafka
ports:
- containerPort: 9092
env:
- name: KAFKA_ADVERTISED_PORT
value: "32132"
- name: KAFKA_ADVERTISED_HOST_NAME
value: localhost
- name: KAFKA_ZOOKEEPER_CONNECT
value: zoo1:2181
这启动了两个 pod kafka-broker1 和 kafka-broker2。我为 Zookeeper 运行了一个单独的服务,名为 zoo1。
我尝试使用以下命令创建一个新主题:
bin/kafka-topics.sh --create --zookeeper 10.105.248.153:2181 --replication-factor 2 --partitions 2 --topic test
它被创建了。下面是主题test的描述
Topic:test PartitionCount:2 ReplicationFactor:2 Configs:
Topic: test Partition: 0 Leader: 2 Replicas: 2,1 Isr: 2
Topic: test Partition: 1 Leader: 2 Replicas: 1,2 Isr: 2
但是当我尝试通过生产者向该主题发布消息时:
kafka/bin/kafka-console-producer.sh --broker-list 10.110.151.216:9092,10.101.47.36:9092 --topic test
要么
kafka/bin/kafka-console-producer.sh --broker-list localhost:32132,localhost:32133 --topic test
我不断收到以下警告:
[2018-08-08 09:53:31,629] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 2 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2018-08-08 09:53:31,731] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 3 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2018-08-08 09:53:31,840] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 4 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2018-08-08 09:53:31,949] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 5 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2018-08-08 09:53:32,056] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 6 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2018-08-08 09:53:32,163] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 7 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2018-08-08 09:53:32,272] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 8 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2018-08-08 09:53:32,382] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 9 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2018-08-08 09:53:32,488] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 10 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
我不知道为什么会这样。
【问题讨论】:
-
如果容器端口不是 Kafka 宣传的端口,那么设置容器端口有什么意义?