从 Kubernetes 集群访问外部中央 kafka 消息代理

问题描述 投票:0回答:2

我对 Kafka 和 kubernetes 世界非常陌生,并尝试在其上做一个项目。我的要求可能听起来很愚蠢,但有点像这样:

Kafka生产者和kafka消费者仅部署在本地Minikube集群中。 Kafka 代理是中央代理,不存在于 minikube 集群中。我搜索了 google,了解了如何连接 Minikube 和 Kafka 集群。但我不知道如何将消息从生产者(部署在 kubernetes 中)发送到这个外部 Kafka 集群,以及如何使用它,因为消费者也在 Minikube 中。有人可以帮我吗?

编辑:

这是我对应的K8s配置。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kafka-producer-deployment
  labels:
    app: kafka-producer
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kafka-producer
  template:
    metadata:
      labels:
        app: kafka-producer
    spec:
      containers:
        - name: kafka-producer
          image: chamilaliyanage/keda-demo-kafka-producer
          imagePullPolicy: Never
          ports:
            - containerPort: 8090
          env:
            - name: KAFKA_BOOTSTRAP_SERVER
              value: "localhost:9092"
            - name: KAFKA_ORDERS_TOPIC
              value: "FSMTest"
---
apiVersion: v1
kind: Service
metadata:
  name: kafka-producer-svc
  labels:
    app: kafka-producer
spec:
  type: NodePort
  ports:
    - port: 8090
      targetPort: 8090
      nodePort: 32000
      protocol: TCP
      name: http
  selector:
    app: kafka-producer
kubernetes apache-kafka minikube
2个回答
0
投票

我做了一个类似的项目,但是 Kafka 集群在 Kubernetes 内部运行,生产者和消费者在外部。

由于可以通过 IP 地址联系 Kafka 代理,因此我只是使用了 Python 库 来生成 Kafka 主题并将数据消费到其中。

然后您只需将生产者和消费者应用程序容器化:)


0
投票

借助 KubeMQ 可以轻松完成。我将指导您完成在部署在本地 Minikube 集群中的生产者和部署在同一 Minikube 集群中的消费者之间发送和使用消息的过程,使用 KubeMQ 作为消息传递平台。

-安装和部署 KubeMQ: 首先,您需要在 Minikube 集群中安装和部署 KubeMQ。您可以按照 KubeMQ 官方文档获取有关如何在 Kubernetes 中设置 KubeMQ 的说明:https://docs.kubemq.io/getting-started/kubernetes-setup

-创建 KubeMQ 通道: 在 KubeMQ 中,通道用于促进生产者和消费者之间的通信。创建一个通道,您的生产者将使用该通道发送消息,而您的消费者将使用该通道接收消息。

-生产者配置: 在生产者应用程序中,您需要配置 KubeMQ SDK 以连接到 Minikube 集群中运行的 KubeMQ 实例。这涉及指定 KubeMQ 服务器地址和您创建的通道。生产者将向该通道发送消息。

-消费者配置: 同样,在您的消费者应用程序中,配置 KubeMQ SDK 以连接到 KubeMQ 实例。这涉及指定 KubeMQ 服务器地址和您创建的通道。消费者将从该通道接收消息。

-发送消息: 在您的生产者代码中,使用 KubeMQ SDK 将消息发送到您创建的通道。您可以根据您的项目需求定义消息的内容和格式。

-接收消息: 在您的消费者代码中,使用 KubeMQ SDK 订阅通道并开始接收消息。您可以根据您的项目逻辑定义消费者如何处理这些消息。

-在 Minikube 中运行生产者和消费者: 在 Minikube 集群中部署生产者和消费者应用程序。确保它们已正确配置为连接到在同一集群中运行的 KubeMQ 实例。

-通过此设置,Minikube 中的生产者将能够向外部 KubeMQ 实例发送消息,Minikube 中的消费者将能够从同一 KubeMQ 实例接收和处理这些消息。

请记住,此方法使用 KubeMQ 作为消息传递平台而不是 Kafka,因此您无需担心连接到外部 Kafka 代理。

有关如何使用 KubeMQ 配置生产者和消费者的更多详细信息,请参阅 KubeMQ 官方文档和 SDK 指南:https://docs.kubemq.io/

© www.soinside.com 2019 - 2024. All rights reserved.