Невозможно запросить Kafka в развертывании в Kubernetes - PullRequest
0 голосов
/ 30 апреля 2018

На одной коробке Ubuntu 14.04

Я следовал той же конфигурации, что и http://dojoblog.dellemc.com/dojo/deploy-kafka-cluster-kubernetes/

Я использую Kubernetes версии v1.10.2 (Я также использую apiVersion: apps / v1 в файлах yml.)

В основном я настроил службу kubernetes для kafka и развертывание kafka с использованием образа wurstmeister / kafka. Зоопарк работает нормально. Службы Zookeeper и Kafka работают. Развертывание Kafka настраивается в соответствии с блогом: KAFKA_ADVERTISED_HOST_NAME = IP-адрес кластера службы kafa, который для меня 10.106.84.132

конфигурация развертывания: .... контейнеры: - имя: кафка изображение: wurstmeister / kafka порты: - containerPort: 9092 ENV: - имя: KAFKA_ADVERTISED_PORT значение: "9092" - имя: KAFKA_ADVERTISED_HOST_NAME значение: 10.106.84.132 - имя: KAFKA_ZOOKEEPER_CONNECT значение: zoo1: 2181 - имя: KAFKA_BROKER_ID значение: «1» - имя: KAFKA_CREATE_TOPICS значение: тема1: 3: 3

Затем я проверяю подписку на kafka и публикую снаружи контейнер kafka на моем хосте, но это не получается, как показано ниже:

root @ edmitchell-virtual-machine: ~ # kafkacat -b 10.106.84.132:9092 -t topic1 % Автоматический выбор режима потребления (используйте -P или -C для переопределения) % ERROR: ошибка темы topic1: Брокер: Лидер недоступен

Лучшее, что я мог сделать в целом, было

Я удаляю и воссоздаю развертывание кафки с - имя: KAFKA_ADVERTISED_HOST_NAME значение: localhost

Затем я могу подписаться и опубликовать, но только из контейнера kafka, он не работает снаружи. Если я изменю значение на что-то еще, кроме localhost, ничего не получится.

Есть идеи? Похоже, Кафка не годится для использования с Kubernetes? может быть, мне не следует развертывать Kafka без использования kubernetes ..

большое спасибо ред


Спасибо, теперь я лучше понимаю функцию nodeport.

У меня все еще та же проблема: root @ fnature-virtual-machine: ~ / Zookeeper # kafkacat -b 192.168.198.160:32748 -t topic1% Автоматический выбор режима потребления (используйте для переопределения -P или -C)% ERROR: ошибка темы topic1: Брокер: Лидер не доступны

Я создал службу nodeport, как вы сказали.

kafka-nodeport NodePort 10.111.234.104 9092: 32748 / TCP 27m

kafka-service LoadBalancer 10.106.84.132 9092: 30351 / TCP 1d

Я также удаляю / создаю развертывание kafka со следующим env: KAFKA_ADVERTISED_PORT: 32748

KAFKA_ADVERTISED_HOST_NAME: 192.168.198.160

KAFKA_ZOOKEEPER_CONNECT: zoo1: 2181

KAFKA_BROKER_ID: 1

KAFKA_CREATE_TOPICS: тема 1: 3: 3

-

также, если я запускаю следующее изнутри контейнера kafka, я получаю похожую ошибку «Лидер недоступен». kafka-console-consumer.sh --bootstrap-server localhost: 9092 --топическая тема1 --из начала

если я создаю развертывание kafka с KAFKA_ADVERTISED_HOST_NAME: localhost, то указанная выше команда работает внутри контейнера kafka

и 192.168.198.160 - это ip интерфейса по умолчанию ens33 в моей Ubuntu VM

Кажется, я не могу найти журналы для kafka

1 Ответ

0 голосов
/ 30 апреля 2018

Kafka брокер регистрирует адрес для zookeeper через KAFKA_ADVERTISED_HOST_NAME. Однако этот адрес является ip кластера kubernetes (10.106.84.132), который доступен только внутри кластера Kubernetes. Таким образом, клиент за пределами кластера не может связаться с брокером Kafka по этому адресу.

Чтобы решить эту проблему, вы можете предоставить сервис kafka общедоступному ip через NodePort или LoadBalancer. Например, запустите kubectl expose svc $YOUR_KAFKA_SERVICE_NAME --name=kafka-nodeport --type=NodePort, а затем посмотрите, какой нодпорт открыт: kubectl get svc kafka-nodeport -o yaml | grep nodePort. В этом примере брокер kafka будет доступен по этому адресу: $KUBERNETES_NODE_IP: $NODEPORT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...