首页 文章

kafka on Kubernetes - UNKNOWN_TOPIC_OR_PARTITION和LEADER_NOT_AVAILABLE错误

提问于
浏览
0

这是this的后续问题 . 我设法做了以下事情:

  • 为我的5经纪人Kafka集群创建无头服务,以进行代理间通信

  • 为每个经纪人设置一项服务

  • 每个服务都有一个外部IP

  • 仅为每个服务选择一个容器,例如service "kafka-0-es"选择pod "kafka-0"

  • 播客正确宣传各自的外部IP . 我通过访问ZooKeeper CLI上的数据来验证这一点 .

我用zkCli创建了一个主题 test-topic 并验证它已创建 . 之后,我开始了Kafka控制台制作人 .

.\kafka-console-producer.bat --broker-list EXTERNAL_IP_1:9093,EXTERNAL_IP_2:9093,EXTERNAL_IP_3:9093,EXTERNAL_IP_4:9093,EXTERNAL_IP_5:9093 --topic test-topic --property parse.key=true --property key.
separator=:
>afkjdshasdkfjhsdkjsf:128379127893123
>[2018-05-09 17:35:51,622] WARN [Producer clientId=console-producer] Got error produce response with correlation id 9 on topic-partition test-topic-0, retrying (2 attempts left). Error: UNKNOWN_TOPIC_OR_PARTITION (org.apache.kafka.clients.producer.internals.Sender)
[2018-05-09 17:35:51,623] WARN [Producer clientId=console-producer] Received unknown topic or partition error in produce request on partition test-topic-0. The topic/partition may not exist or the user may not have Describe access to it (org.apache.kafka.clients.producer.internals.Sender)
[2018-05-09 17:35:51,649] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 10 : {test-topic=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2018-05-09 17:35:51,720] WARN [Producer clientId=console-producer] Got error produce response with correlation id 11 on topic-partition test-topic-0, retrying (1 attempts left). Error: UNKNOWN_TOPIC_OR_PARTITION (org.apache.kafka.clients.producer.internals.Sender)
[2018-05-09 17:35:51,720] WARN [Producer clientId=console-producer] Received unknown topic or partition error in produce request on partition test-topic-0. The topic/partition may not exist or the user may not have Describe access to it (org.apache.kafka.clients.producer.internals.Sender)
[2018-05-09 17:35:51,773] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 12 : {test-topic=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2018-05-09 17:35:51,823] WARN [Producer clientId=console-producer] Got error produce response with correlation id 13 on topic-partition test-topic-0, retrying (0 attempts left). Error: UNKNOWN_TOPIC_OR_PARTITION (org.apache.kafka.clients.producer.internals.Sender)
[2018-05-09 17:35:51,823] WARN [Producer clientId=console-producer] Received unknown topic or partition error in produce request on partition test-topic-0. The topic/partition may not exist or the user may not have Describe access to it (org.apache.kafka.clients.producer.internals.Sender)
[2018-05-09 17:35:51,913] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 14 : {test-topic=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2018-05-09 17:35:51,936] ERROR Error when sending message to topic test-topic with key: 20 bytes, value: 15 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.UnknownTopicOrPartitionException: This server does not host this topic-partition.
[2018-05-09 17:35:51,945] WARN [Producer clientId=console-producer] Received unknown topic or partition error in produce request on partition test-topic-0. The topic/partition may not exist or the user may not have Describe access to it (org.apache.kafka.clients.producer.internals.Sender)
[2018-05-09 17:35:52,034] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 16 : {test-topic=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2018-05-09 17:35:52,161] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 20 : {test-topic=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2018-05-09 17:40:52,288] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 25 : {test-topic=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)

根据Zookeeper的说法,我的Kafka经纪人“kafka-2”是这个主题的领导者:

get /kafka/brokers/topics/test-topic/partitions/0/state

{"controller_epoch":5,"leader":2,"version":1,"leader_epoch":0,"isr":[2,1]}

但是pod kafka-2在Log中抛出了错误

[2018-05-09 15:21:02,524] ERROR [ReplicaFetcherThread-0-2], Error for partition [test-topic,0] to broker 2:org.apache.kafka.common.errors.UnknownTopicOrPartitionException: This server does not host this topic-partition. (kafka.server.ReplicaFetcherThread)

Not quite sure why this is happening, the configuration looks fine to me. Is there something more I am missing to get my Kafka cluster running on Kubernetes?

请注意,我还尝试完全擦除我的群集(缩小kafka群集,删除kafka存储,缩小zk群集,删除zk存储,扩展zk,扩展kafka)但无济于事 .

1 回答

  • 0

    我刚才修好了 . 问题是我的无头服务包含 internal 以及 external 端口 .

    现在,我的无头服务只包含内部端口:

    apiVersion: v1
    kind: Service
    metadata:
      name: kafka-hs
      labels:
        app: kafka
    spec:
      ports:
      - port: 29092
        name: server
      clusterIP: None
      selector:
        app: kafka
    

    我公开外部ip的per-pod-services包含外部端口(请注意,RedHat OpenShift脚本处理外部ips对这些服务的分配,这在服务定义中没有涉及):

    apiVersion: v1
    kind: Service
    metadata:
      name: kafka-es-4
      labels:
        app: kafka
      namespace: whatever
    spec:
      ports:
      - port: 9093
        name: kafka-port
        protocol: TCP
      selector:
        statefulset.kubernetes.io/pod-name: kafka-4
        app: kafka
      type: LoadBalancer
    

相关问题