Конечная точка Kubernetes создана для Kafka, но не отражается в POD

В кластере Kubernetes я создал конечную точку, указывающую на кластер Kafka. Конечная точка успешно создана.

Имя - кафка
Конечная точка - X.X.X.X: 9092

В yaml развертывания моего приложения Spring Boot я сохранил переменную среды BROKER_IP. Для этой переменной среды я указал:

env:
    - name: BROKER_IP
      value: kafka

POD находится в состоянии ошибки. На моем bootstrap-сервере я получаю kafka, а не фактическую созданную конечную точку. Есть предположения?

ОБНОВЛЕНИЕ. Просто попробовал kafka: 9092, и он сработал. Итак, интересно, отображается ли ENDPOINT только на IP, а не на порт? Я правильно понимаю ??


person Arpan Sharma    schedule 19.08.2019    source источник


Ответы (1)


Возможно ли, что вы забыли создать объект Service, соответствующий конечным точкам? Поскольку вы сами предоставляете пары ip-port, служба должна быть без селектора.

Это работает для меня:

kind: Endpoints
apiVersion: v1
metadata:
  name: kafka
subsets:
  - addresses: [{ip: "1.2.3.4"}]
    ports: [{port: 9092}]
---
kind: Service
apiVersion: v1
metadata:
  name: kafka
spec:
  ports: [{port: 9092}]

Тестируем это:

$ kubectl run kafka-dns-test --image=busybox --attach --rm --restart=Never -- nslookup kafka
If you don't see a command prompt, try pressing enter.
Server:         10.96.0.10
Address:        10.96.0.10:53

Name:   kafka.default.svc.cluster.local
Address: 10.96.220.40

Успешный поиск, игнорировать лишние *** Can't find xxx: No answer сообщения

Кроме того, поскольку существует объект Service, вы получаете некоторые переменные среды в своих модулях (без необходимости их объявлять):

KAFKA_PORT='tcp://10.96.220.40:9092'
KAFKA_PORT_9092_TCP='tcp://10.96.220.40:9092'
KAFKA_PORT_9092_TCP_ADDR='10.96.220.40'
KAFKA_PORT_9092_TCP_PORT='9092'
KAFKA_PORT_9092_TCP_PROTO='tcp'
KAFKA_SERVICE_HOST='10.96.220.40'
KAFKA_SERVICE_PORT='9092'

Но наиболее гибким способом использования Службы по-прежнему является использование имени DNS (в данном случае kafka).

person Janos Lenart    schedule 19.08.2019
comment
только что протестировал с моей исходной конфигурацией - kafka: 9092 работает !! Все еще интересно, что мне не хватает. Я хочу использовать просто «кафка». Попробую вашу конфигурацию и подтвердю ... - person Arpan Sharma; 19.08.2019
comment
невозможно имя DNS пользователя, поскольку сервер начальной загрузки в Spring ожидает имя хоста: порт. Служба и конечная точка уже созданы. - person Arpan Sharma; 19.08.2019