Я хочу запустить задание непрерывной потоковой обработки с помощью Beam на бегуне Flink в Kubernetes. Я следил за этим руководством здесь (
https://python.plainenglish.io/apache-b ... 965f37b7cb), но я не уверен, что автор имеет в виду, когда говорит о «мастер-контейнер флинка». Я не понимаю, как я должен отправлять свой код Python в кластер, если этот код определен в самом образе контейнера.
Архитектура кластера Kubernetes Flink выглядит следующим образом:< /p>
- один JobManager предоставляет доступ к веб-интерфейсу Flink через службу и вход
< li>Несколько диспетчеров задач, каждый из которых запускает 2 контейнера:
- Диспетчер задач Flink
- Рабочий пул Beam, который предоставляет доступ к порту 50000.
Код Python в в примере руководства конфигурация Beam выглядит следующим образом:
Код: Выделить всё
options = PipelineOptions([
"--runner=FlinkRunner",
"--flink_version=1.10",
"--flink_master=localhost:8081",
"--environment_type=EXTERNAL",
"--environment_config=localhost:50000"
])
Очевидно, что когда вы запускаете это локально в соответствии с руководством, он обращается к рабочему пулу Beam для запуска приложения. Однако если у меня есть образ Docker, содержащий код моего приложения, и я хочу запустить это приложение в Kubernetes, где мне развернуть этот образ в моем кластере Kubernetes? Является ли он контейнером внутри
каждого модуля диспетчера задач (и, следовательно, использует localhost:50000 для связи с Beam)? Или я создаю
один модуль, содержащий код моего приложения, и направляю этот модуль на порт 50000 моих диспетчеров задач. Если да, то является ли тот факт, что у меня
несколько диспетчеров задач, проблемой? проблема?
Любые ссылки на документацию или примеры будут очень полезны. На этот другой вопрос SO есть неполный ответ.
Подробнее здесь:
https://stackoverflow.com/questions/767 ... ink-runner