Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在《库伯内特斯》中创作简单的卡夫卡_Java_Kubernetes_Apache Kafka - Fatal编程技术网

Java 如何在《库伯内特斯》中创作简单的卡夫卡

Java 如何在《库伯内特斯》中创作简单的卡夫卡,java,kubernetes,apache-kafka,Java,Kubernetes,Apache Kafka,我的任务是用kubernetes中的kafka创建一个应用程序。但当我将消费者连接到卡夫卡时,我发现了一个错误: 警告1---[ntainer#0-0-C-1]org.apache.kafka.clients.NetworkClient:[Consumer clientId=Consumer-test-1,groupId=test]无法建立到节点1(kafka service/10.99.233.131:9092)的连接。经纪人可能不在 警告1---[ntainer#0-0-C-1]org.ap

我的任务是用kubernetes中的kafka创建一个应用程序。但当我将消费者连接到卡夫卡时,我发现了一个错误:

警告1---[ntainer#0-0-C-1]org.apache.kafka.clients.NetworkClient:[Consumer clientId=Consumer-test-1,groupId=test]无法建立到节点1(kafka service/10.99.233.131:9092)的连接。经纪人可能不在

警告1---[ntainer#0-0-C-1]org.apache.kafka.clients.NetworkClient:[消费者客户端id=Consumer-test-1,组id=test]引导代理kafka服务:9092(id:-1机架:null)已断开

这是我为kubernetes准备的yaml文件:

apiVersion: v1
kind: Service
metadata:
  name: kafka-service
  labels:
    name: kafka
spec:
  ports:
  - port: 9092
    targetPort: 9092
    protocol: TCP
  selector:
    name: kafka
---
apiVersion: v1
kind: Service
metadata:
  name: zookeeper-service
  labels:
    name: zookeeper
spec:
  ports:
  - name: client
    port: 2181
    protocol: TCP
  - name: follower
    port: 2888
    protocol: TCP
  - name: leader
    port: 3888
    protocol: TCP
  selector:
    name: zookeeper
  type: LoadBalancer
---
apiVersion: v1
kind: Pod
metadata:
  name: zookeeper
  labels:
    name: zookeeper 
spec:
  containers:
    - name: zookeeper
      image: zookeeper:3.7.0
---
apiVersion: v1
kind: Pod
metadata:
  name: kafka
  labels:
    name: kafka 
spec:
  containers:
    - name: kafka
      image: wurstmeister/kafka:2.13-2.6.0
      imagePullPolicy: "IfNotPresent"
      env:
        - name: KAFKA_ADVERTISED_PORT
          value: "666"
        - name: KAFKA_ADVERTISED_HOST_NAME
          value: localhost
        - name: KAFKA_ZOOKEEPER_CONNECT
          value: zookeeper-service:2181
        - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
          value: INSIDE:PLAINTEXT
        - name: KAFKA_ADVERTISED_LISTENERS
          value: INSIDE://:666
        - name: KAFKA_LISTENERS
          value: INSIDE://:666
        - name: KAFKA_INTER_BROKER_LISTENER_NAME
          value: INSIDE
      ports:
        - containerPort: 9092
简单java代码:

@Service
public class Consumer {
    @KafkaListener(topics = "new-topic",groupId = "test")
    public void consumeMessage(String message){
        System.out.println("************************");
        System.out.println(message);
        System.out.println("************************");
    }
}

如何创建kafka broker而不只是为了测试而扩展?

这篇文章对我很有帮助:

我将yaml文件更改为:

apiVersion: v1
kind: Pod
metadata:
  name: kafka-service
  labels:
    name: kafka-service 
spec:
  containers:
    - name: kafka-service
      image: wurstmeister/kafka:2.13-2.6.0
      imagePullPolicy: "IfNotPresent"
      env:
        - name: KAFKA_ZOOKEEPER_CONNECT
          value: zookeeper-service:2181
        - name: KAFKA_BROKER_ID
          value: "1"

        - name: KAFKA_LISTENERS
          value: IN://:9092,OUT://:9093
        - name: KAFKA_ADVERTISED_LISTENERS
          value: IN://localhost:9092,OUT://kafka-service:9093
        - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
          value: IN:PLAINTEXT,OUT:PLAINTEXT
        - name: KAFKA_INTER_BROKER_LISTENER_NAME
          value: IN
这意味着kubernetes网络内的端口9093öpen和从主机打开的端口9092。
在这之后,所有工作都正常。

从这里开始无论如何,您似乎误解了您设置的环境变量
KAFKA_播发_侦听器
优先于
KAFKA_播发_端口
和主机名。既然您已经将侦听器端口设置为666,那么就没有可以在客户端中使用的容器端口9092