Разоблачение кластера Кафки в Кубернетесе с помощью сервиса LoadBalancer - PullRequest
0 голосов
/ 27 марта 2019

Предположим, если у меня есть установка узла Kafka с 3 узлами.Тогда как мне выставить его вне облака с помощью сервиса Load Balancer?Я прочитал справочный материал, но у меня есть несколько сомнений.

Скажем, например, ниже приведен сервис для брокера

apiVersion: v1 
  kind: Service metadata: 
  name: kafka-0 
  annotations: dns.alpha.kubernetes.io/external: kafka-0.kafka.my.company.com 
  spec: 
    externalTrafficPolicy: Local 
    type: LoadBalancer 
    ports: 
      - port: 9092 
      name: outside 
      targetPort: 9092 
    selector: app: kafka kafka-pod-id: "0"
  1. Что такое порт и targetPort?
  2. Настраиваю ли я службу LoadBalancer для каждого из брокеров?
  3. Привязаны ли эти несколько брокеров к одному общедоступному IP-адресу облака LB?
  4. Каким образом служба за пределами k8s / облака получает доступ к отдельному брокеру?Используя public-ip:port?или используя kafka-<pod-id>.kafka.my.company.com:port ?.Также какой порт используется здесь?port или targetPort?
  5. Как мне указать эту конфигурацию в свойстве Advertised.listeners брокера Kafka?Поскольку порт может отличаться для служб внутри кластера k8s и за его пределами.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 21 мая 2019

На основании предоставленной вами информации я постараюсь дать вам несколько ответов, в конечном итоге дать совет.

1) port: - это номер порта, который делает службу видимой для других служб, работающих в том же кластере K8s. Другими словами, если служба хочет вызвать другую службу, запущенную в том же кластере Kubernetes, она сможет сделать это, используя порт, указанный для port в файле спецификации службы.

targetPort: - это порт на POD, где работает служба. Ваше приложение должно прослушивать сетевые запросы на этом порту, чтобы служба работала.

2/3) Каждый брокер должен быть выставлен как LoadBalancer и должен быть настроен как автономный сервис для внутренней связи. Для внешнего подключения должен быть один дополнительный LoadBalancer с внешним ip.

Пример услуги

apiVersion: v1
kind: Service
metadata:
  name: kafka-0
  annotations: dns.alpha.kubernetes.io/external: kafka-0.kafka.my.company.com
spec:
  ports:
  - port: 9092
    name: kafka-port
    protocol: TCP
  selector:
    pod-name: kafka-0
  type: LoadBalancer

4) Вы должны использовать kafka-<pod-id>.kafka.my.company.com:port

5) Должен быть установлен внешний адрес, чтобы клиенты могли к нему подключаться. Эта статья может помочь в понимании.

Аналогичный случай был на Github, он также может вам помочь - https://github.com/kow3ns/kubernetes-kafka/issues/3

Кроме того, вы также можете подумать о Ingress - https://tothepoint.group/blog/accessing-kafka-on-google-kubernetes-engine-from-the-outside-world/

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