我对 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
我做了一个类似的项目,但是 Kafka 集群在 Kubernetes 内部运行,生产者和消费者在外部。
由于可以通过 IP 地址联系 Kafka 代理,因此我只是使用了 Python 库 来生成 Kafka 主题并将数据消费到其中。
然后您只需将生产者和消费者应用程序容器化:)
借助 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/