代码之家  ›  专栏  ›  技术社区  ›  Cassie

Broker可能不可用错误Kafka架构注册表

  •  0
  • Cassie  · 技术社区  · 7 年前

    我已经使用kubernetes部署和服务定义了kafka和kafka模式注册表配置。我用过 this link 作为环境变量设置的参考。但是,当我尝试使用registry运行kafka时,我看到schema registry pods崩溃,并在日志中显示错误消息:

    [kafka-admin-client-thread | adminclient-1] WARN
    org.apache.kafka.clients.NetworkClient - [AdminClient
    clientId=adminclient-1] Connection to node -1
    (localhost/127.0.0.1:9092) could not be established. Broker may not be
    available.
        [main] ERROR io.confluent.admin.utils.ClusterStatus - Error while getting broker list.
        java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Timed out waiting for
    a node assignment.
    

    这个错误的原因可能是什么?

    apiVersion: v1
    kind: Service
    metadata:
      name: kafka-service
    spec:
      ports:
        - name: client
          port: 9092
      selector:
        app: kafka
        server-id: "1"
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: kafka-1
    spec:
      selector:
        matchLabels:
          app: kafka
          server-id: "1"
      replicas: 1
      template:
        metadata:
          labels:
            app: kafka
            server-id: "1"
        spec:
          volumes:
            - name: kafka-data
              emptyDir: {}
          containers:
            - name: server
              image: confluentinc/cp-kafka:5.1.0
              env:
                - name: KAFKA_ZOOKEEPER_CONNECT
                  value: zookeeper:2181
                - name: KAFKA_ADVERTISED_LISTENERS
                  value: PLAINTEXT://localhost:9092
                - name: KAFKA_BROKER_ID
                  value: "2"
                - name: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR
                  value: "1"
              ports:
                - containerPort: 9092
              volumeMounts:
                - mountPath: /var/lib/kafka
                  name: kafka-data
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: schema-registry-service
    spec:
      ports:
        - name: client
          port: 8081
      selector:
        app: kafka-schema-registry
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: kafka-schema-registry
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: kafka-schema-registry
      template:
        metadata:
          labels:
            app: kafka-schema-registry
        spec:
          containers:
            - name: kafka-schema-registry
              image: confluentinc/cp-schema-registry:5.1.0
              env:
                - name: SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL
                  value: zookeeper:2181
                - name: SCHEMA_REGISTRY_HOST_NAME
                  value: localhost
                - name: SCHEMA_REGISTRY_LISTENERS
                  value: "http://0.0.0.0:8081"
                - name: SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS
                  value: PLAINTEXT://localhost:9092
              ports:
                - containerPort: 8081
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Robin Moffatt    7 年前

    您已将架构注册表配置为在 kafka:9092 ,但您还将kafka代理配置为将其地址公布为 localhost:9092 是的。

    我不太熟悉库伯内特斯,但是 this article 描述在使用容器、iaas等时,原则上如何处理网络配置。

    推荐文章