#kubernetes #apache-kafka #minikube
Вопрос:
Я очень новичок в мире Кафки и Кубернетеса и пытаюсь сделать над ним проект. Мое требование может показаться глупым, но оно чем-то похоже на это:
Производитель Kafka и потребители kafka развертываются только в локальном кластере мини-кубов. Брокер Kafka является центральным брокером и не присутствует в кластере minikube. Я поискал в Google и узнал, как я могу подключить Миникуб и кластер Кафки. Но я не знаю, как отправить сообщение от производителя(развернутого в kubernetes) в этот внешний кластер Кафки и как его использовать, поскольку потребитель также находится в мини-кубе. Кто-нибудь может мне в этом помочь, пожалуйста?
Правки:
Вот моя соответствующая конфигурация 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
Комментарии:
1. Местоположение кластера не имеет значения, пока работает сетевое подключение. Миникуб не «подключается», это делают ваши модули. Пожалуйста, покажите свой код и любые конкретные ошибки, которые вы получаете при попытке подключиться
2. Чтобы связаться с внешним брокером kafka, достаточно указать его адрес в ваших блоках kafka. С другой стороны, вам нужно убедиться, что ваш модуль доступен. В этом случае, вероятно, через службу типа NodePort.
3. Проблема в том, что я не вижу потребителей Кафки, прикрепленных к моей сформированной теме в кластере Кафки. Также в нем также не создается сообщение. Я рекламировал Кафку.слушатель как localhost:9092 и добавил то же самое в свой YAML. Обновление yaml для справки.
Ответ №1:
Я сделал аналогичный проект, но там, где кластер Кафки работал внутри Kubernetes, а Производитель и Потребитель находились снаружи.
Поскольку с брокерами Кафки можно связаться по IP-адресу, я просто использовал библиотеку Python для создания и использования данных в теме Кафки.
Затем вам просто нужно будет контейнеризировать свои приложения для производителей и потребителей 🙂