Искра с Kubernetes, соединяющимся с pod id, а не с адресом - PullRequest
0 голосов
/ 13 февраля 2019

У нас на k8s развернуто несколько сервисов, включая Apache Spark.Все сервисы работают.Наше приложение подключается к мастеру Spark, чтобы отправить задание с помощью службы DNS k8s для кластера, где мастер называется spark-api, поэтому мы используем master=spark://spark-api:7077, а мы используем spark.submit.deployMode=cluster.Мы отправляем работу через API, а не через скрипт spark-submit.

Это запустит «драйвер» и всех «исполнителей» в кластере, и эта часть, кажется, работает, но есть обратный вызов к коду запуска в нашем приложении из некоторого процесса Spark.По какой-то причине он пытается подключиться к harness-64d97d6d6-4r4d8, который является идентификатором pod , а не IP-адресом кластера k8s или DNS.

Как этот идентификатор pod попасть в систему?Спарк почему-то думает, что это адрес службы, которая его назвала.Само собой разумеется, что любое соединение с идентификатором модуля k8s завершается неудачно, и так же и работа.

Любая идея, как Spark может считать идентификатор модуля IP-адресом или DNS-именем?

Кстати, если мы запустим небольшое примерное задание с master=local, все в порядке, но то же самое задание, выполненное с помощью вышеупомянутой конфигурации, пытается подключиться к ложному идентификатору модуля.

BTW2: k8sDNS для вызывающего модуля: harness-api

1 Ответ

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

Вы можете использовать Безголовый сервис для harness-64etcetc Pod для выполнения обратного обнаружения DNS.Фактически, он создаст конкретную конечную точку для соответствующей службы, сопоставив соответствующий селектор внутри вашего приложения, и в результате запись будет добавлена ​​в конфигурацию DNS Kubernetes.

В конце концов, я обнаружил связанную # 266 проблему с Github, которая, вероятно, может принести некоторую полезную информацию для дальнейшего изучения.

...