просто оставлю это тут вдруг кто ответит:
Я обычно с пониманием отношусь к тому что я чего-то недопонимаю, но тут походу фундаментальное недопонимание и оно меня бесит.
Короче, есть некое приложение который использует RAFT для достижения консенсуса. При этом, алгоритм там настолько тупо реализован что требуется при запуске указать всех участников и они должны быть доступны, иначе приложение не стартует.
Для того чтобы с самого начала были известны имена всех участников, я заюзал petset с headless service (можно deployment с отдельными сервисами но там свои косяки). То есть, сервис используется в данном случае ТОЛЬКО для того чтобы были стабильные dns-имена правильно резольвящиеся в айпишники.
Приложение запускается, видит всех своих друзей и с использованием raft образует mesh-сесть (ну, не совсем mesh конечно но в данном контексте сойдет) между всеми участниками подключившись НАПРЯМУЮ друг к другу по айпишникам которые срезольвились через dns по порту 5001.
На этом мои знания заканчиваются и начинается магия...
1) Почему без указания абсолютно левого порта в headless serivice который нужен только для резольвинга приложение не запускается (висит на "ожидаем всех участников") - то есть с вероятностью 90% не создаются A-записи в кубернетеском dns? (каюсь, не проверил этот момент потому что утомился)
2) Что я не понимаю в этой схеме? Есть какая-то ключевая позиция которую я упускаю?
Вот код того что проверяю если что: https://pastebin.com/aF6Y2USY
А там не srv записи разве? для srv записи нужен порт
Обсуждают сегодня