Leader Not Available Kafka in Console Producer

前端 未结 24 2533
野趣味
野趣味 2020-12-07 07:47

I am trying to use Kafka.
All configurations are done properly but when I try to produce message from console I keep getting the following error

WARN Err         


        
24条回答
  •  醉梦人生
    2020-12-07 08:10

    For anyone trying to run kafka on kubernetes and running into this error, this is what finally solved it for me:

    You have to either:

    1. Add hostname to the pod spec, that way kafka can find itself.

    or

    1. If using hostPort, then you need hostNetwork: true and dnsPolicy: ClusterFirstWithHostNet

    The reason for this is because Kafka needs to talk to itself, and it decides to use the 'advertised' listener/hostname to find itself, rather than using localhost. Even if you have a Service that points the advertised host name at the pod, it is not visible from within the pod. I do not really know why that is the case, but at least there is a 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
    

提交回复
热议问题