У нас на 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