Как назначить DNS-имя узлу Kafka Kubernetes Nodeport - PullRequest
0 голосов
/ 04 апреля 2020

Я создал кластер Kafka с помощью оператора Strimzi Kafka на мини-кубе, чтобы изучить основы. Я пытаюсь получить доступ к Kafka внутри среды minikube с моего хоста, и для этого я создал порт узла Kafka:

apiVersion: kafka.strimzi.io/v1beta1
kind: Kafka
metadata:
  name: kafka-cluster
spec:
  kafka:
    version: 2.4.0
    replicas: 3
    listeners:
      plain: {}
      tls: {}
      external:
        type: nodeport
        tls: false
        overrides:
          bootstrap:
            nodePort: 32100
          brokers:
          - broker: 0
            nodePort: 32000
          - broker: 1
            nodePort: 32001
          - broker: 2
            nodePort: 32002  
...
...
...

NAME                                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                               AGE
kafka-cluster-kafka-0                    NodePort    10.96.40.176    <none>        9094:32000/TCP                        7d
kafka-cluster-kafka-1                    NodePort    10.96.138.2     <none>        9094:32001/TCP                        7d
kafka-cluster-kafka-2                    NodePort    10.96.209.16    <none>        9094:32002/TCP                        7d
kafka-cluster-kafka-bootstrap            ClusterIP   10.96.216.169   <none>        9091/TCP,9092/TCP,9093/TCP,9404/TCP   7d
kafka-cluster-kafka-brokers              ClusterIP   None            <none>        9091/TCP,9092/TCP,9093/TCP            7d
kafka-cluster-kafka-exporter             ClusterIP   10.96.17.45     <none>        9404/TCP                              47d
kafka-cluster-kafka-external-bootstrap   NodePort    10.96.252.97    <none>        9094:32100/TCP                        7d
kafka-cluster-zookeeper-client           ClusterIP   10.96.155.34    <none>        9404/TCP,2181/TCP                     7d
kafka-cluster-zookeeper-nodes            ClusterIP   None            <none>        2181/TCP,2888/TCP,3888/TCP            7d




Пока все работает хорошо, и я могу опубликовать sh сообщения для Kafka topi c с использованием kafka-cluster-kafka-external- bootstrap (withBootstrapServers("192.168.99.107:32100"). Так как я изучаю вещи постепенно, я хотел посмотреть, смогу ли я назначить имя вместо ссылки по IP-адресу.

Есть ли простой способ сделать это в конфигурации Nodeport? Я застрял в этом вопросе на неделю. Цени толчок в правильном направлении!

Ответы [ 2 ]

2 голосов
/ 05 апреля 2020

Это в основном зависит от вашей инфраструктуры. Minikube использует IP-адреса как адрес узла, так и адрес балансировщика нагрузки. Вот почему Strimzi всегда дает вам адрес на основе IP-адреса. Если бы вы запускали его в Kubernetes, например, где-нибудь на AWS, вы бы сразу получили DNS-имена вместо IP-адресов.

Даже в Minikube вы можете настроить Strimzi на использование определенных вами имен: https://strimzi.io/docs/latest/full.html#con -kafka-broker-external-listeners-address-deploy-configuration-kafka ... но вам нужно будет убедиться, что эти маршруты к IP-адресу Minikube, например, добавляя их ежегодно к /etc/hosts. Но TBH, обычно это не стоит этого с Minikube.

0 голосов
/ 05 апреля 2020

Вам следует установить балансировщик нагрузки из чистого металла Kubernetes, например MetalLB , затем использовать LoadBalancer сервис вместо NodePort, получить EXTERNAL-IP значение LoadBalancer Служба и точка DNS на этот IP.

...