Für jeden, der versucht kafka auf Kubernetes laufen und in diesen Fehler ausgeführt wird, ist es das, was es für mich endlich gelöst:
Sie müssen entweder:
hostname
zum pod spec hinzufügen, dass So kann Kafka sich finden.
oder
- Wenn
hostPort
verwenden, dann müssen Sie hostNetwork: true
und dnsPolicy: ClusterFirstWithHostNet
Der Grund dafür ist, weil Kafka muss sich reden, und Es entscheidet sich dafür, den "angekündigten" Listener/Hostnamen zu verwenden, um sich selbst zu finden, anstatt localhost zu verwenden. Auch wenn Sie einen Dienst haben, der den beworbenen Hostnamen auf den Pod verweist, ist er nicht im Pod sichtbar. Ich weiß nicht wirklich, warum das so ist, aber es gibt zumindest einen Workaround.
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: zookeeper-cluster1
namespace: default
labels:
app: zookeeper-cluster1
spec:
replicas: 1
selector:
matchLabels:
app: zookeeper-cluster1
template:
metadata:
labels:
name: zookeeper-cluster1
app: zookeeper-cluster1
spec:
hostname: zookeeper-cluster1
containers:
- name: zookeeper-cluster1
image: wurstmeister/zookeeper:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 2181
- containerPort: 2888
- containerPort: 3888
---
apiVersion: v1
kind: Service
metadata:
name: zookeeper-cluster1
namespace: default
labels:
app: zookeeper-cluster1
spec:
type: NodePort
selector:
app: zookeeper-cluster1
ports:
- name: zookeeper-cluster1
protocol: TCP
port: 2181
targetPort: 2181
- name: zookeeper-follower-cluster1
protocol: TCP
port: 2888
targetPort: 2888
- name: zookeeper-leader-cluster1
protocol: TCP
port: 3888
targetPort: 3888
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kafka-cluster
namespace: default
labels:
app: kafka-cluster
spec:
replicas: 1
selector:
matchLabels:
app: kafka-cluster
template:
metadata:
labels:
name: kafka-cluster
app: kafka-cluster
spec:
hostname: kafka-cluster
containers:
- name: kafka-cluster
image: wurstmeister/kafka:latest
imagePullPolicy: IfNotPresent
env:
- name: KAFKA_ADVERTISED_LISTENERS
value: PLAINTEXT://kafka-cluster:9092
- name: KAFKA_ZOOKEEPER_CONNECT
value: zookeeper-cluster1:2181
ports:
- containerPort: 9092
---
apiVersion: v1
kind: Service
metadata:
name: kafka-cluster
namespace: default
labels:
app: kafka-cluster
spec:
type: NodePort
selector:
app: kafka-cluster
ports:
- name: kafka-cluster
protocol: TCP
port: 9092
targetPort: 9092
, welche Version von kafka verwenden Sie? Woher weißt du, dass alle Konfigurationen richtig sind? Bitte versuchen Sie weitere Informationen hinzuzufügen – Nautilus
Ich benutze 2.11-0.9.0.0 Version, ich sagte alle Konfigurationen sind korrekt, weil es funktionierte. – Vishesh
@Vishesh Können Sie Ergebnis des folgenden Befehls liefern ./bin/kafka-topics.sh --zookeke localhost: 2181 --describe --topic IhrTopicName – avr