Подключите ResourceManager для Flink FLIP-6, запустите новое задание сеанса

Я хочу создать новое развертывание k8s с заданием сеанса; и развернуть один taskmanager с конфигурацией, подобной этой в flink-conf.yaml:

jobmanager.rpc.address: analytics-job
jobmanager.rpc.port: 6123

Однако может показаться, что мой TaskManager отказывается использовать порт 6123 и всегда выбирает высокие порты? Сервис k8s задания аналитики выглядит так:

apiVersion: v1
kind: Service
metadata:
  name: analytics-job
spec:
  type: ClusterIP
  ports:
  - name: rpc
    port: 6123
  - name: blob
    port: 6124
  - name: query
    port: 6125
    # nodePort: 30025
  - name: ui
    port: 8081
    # nodePort: 30081
  selector:
    app: analytics
    stack: flink
    component: job-cluster

и, как видите, я пробовал как сервисы ClusterIP, так и NodePort. Я бы предпочел тип ClusterIP, поскольку он создает внутренний балансировщик нагрузки перед моим процессом k8s Job / standalone-job.sh Flink.


person Henrik    schedule 25.04.2019    source источник


Ответы (2)


В flink-conf.yaml установите

high-availability.jobmanager.port: 6123

Это вернет соединение диспетчера ресурсов к статическому порту, который вы хотите использовать.

person David Anderson    schedule 29.04.2019
comment
Спасибо !! Я ошибочно устанавливал resourcemanager.rpc.port в режиме высокой доступности и задавался вопросом, почему этот порт не используется. - person worldofprasanna; 24.08.2020

Причина, по которой вы не получаете nodePorts, такие как 6123, 6124 и 6125, выделенные мастером Kubernetes, заключается в том, что существует диапазон портов для nodePorts, определяемый параметром --service-node-port-range в _ 7_. По умолчанию для этого диапазона установлено значение 30000-32767.

Вы можете просто добавить этот флаг --service-node-port-range в конфигурацию вашего kubeapi-сервера, как правило, под /etc/kubernetes/manifests/kube-apiserver.yaml с некоторым значением, например:

--service-node-port-range=6000-32767

Имейте в виду, что может быть перекрытие портов с некоторыми другими службами, которые вы запускаете на узле.

В качестве побочного узла работа над FLIP-6 продолжается. в K8s (на момент написания этой статьи), и вы можете видеть, что в Kubernetes в том смысле, что менеджер заданий на самом деле не создает ваш диспетчер задач и не распределяет ресурсы динамически.

person Rico    schedule 25.04.2019
comment
Это хороший комментарий, поэтому я поставил вам +1, но это не ответ. 1) проблема в k8s не в назначении диапазонов портов узла; это даже не о nodeports (почему это должно быть? у него есть виртуальные узлы, называемые pods!), 2) мой вопрос в том, почему происходит сбой подключения к диспетчеру ресурсов, но вы отвечаете, как я могу сделать порты с меньшими номерами привязываемыми, что является не то же самое; потому что даже если я внесу ваши изменения, соединение все равно будет выполнено на случайном высоком порте, поскольку порты узла службы и фактический порт в журналах не коррелируют - person Henrik; 26.04.2019
comment
Вы также говорите, что FLIP-6 - это WIP, но это тоже неправда; если вы посмотрели на связанную проблему, вы обнаружите, что она помечена как завершенная. Также есть совершенно новая платформа (платформа dA / платформа Ververica), которая основана на сложности самостоятельной работы должным образом; который, похоже, использует те же концепции, что и у меня здесь. Наконец, я не хочу дублирования сервисов, я хочу работающее развертывание без дублирования сервисов. - person Henrik; 26.04.2019
comment
Без проблем. В Kubernetes NodePort - это фактический порт на физическом компьютере, к которому фактически будут привязаны ваш менеджер заданий и диспетчер задач. Параметр port - это просто внутренний порт в контейнере. Статические порты - это то, как FLIP-6 теперь поддерживается в K8s, динамические - все еще WIP: проблемы. apache.org/jira/browse/FLINK-9953. Mesos и Yarn имеют более родную поддержку. Платформа dA работает, но это платное решение. Надеюсь, это поможет. - person Rico; 26.04.2019
comment
Я хотел бы использовать статические порты, но при настроенном HA соединение диспетчера ресурсов всегда выполняется через порт высокого уровня, а не через статический порт, который я настроил в своей службе. Кроме того, я думаю, что проблема, на которую вы ссылаетесь, давно умерла и не имеет отношения к FLIP-6; это пассивный вариант, насколько я понял. - person Henrik; 27.04.2019
comment
Вот что я говорю о пассивном Kubernetes, который всегда использует высокий порт из-за --service-node-port-range - person Rico; 28.04.2019
comment
Я не против статических высоких портов. Проблема в том, что порт меняется каждый раз при перезапуске кластера? - person Henrik; 28.04.2019
comment
Ну, нет, если вы используете одни и те же сервисы Kubernetes для демонстрации своего менеджера заданий и диспетчеров задач. - person Rico; 28.04.2019