подать искру с оператором Прометея - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь использовать spark на Kubernetes. Идея состоит в том, чтобы использовать кластер от spark-submit до k8s, который работает prometheus operator. Теперь я знаю, что prometheus operator может ответить на ServiceMonitor yaml, но я запутался, как предоставить некоторые вещи, требуемые в YAML, используя spark-submit

Вот YAML:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: sparkloads-metrics
  namespace: runspark
spec:
  selector:
    matchLabels:
      app: runspark
  namespaceSelector:
    matchNames:
    - runspark
  endpoints:
  - port: 8192 ---> How to provide the name to port using `spark-submit`
    interval: 30s
    scheme: http

1 Ответ

1 голос
/ 22 января 2020

Вы не можете предоставить дополнительные порты и их имена для Сервиса, созданного SparkSubmit (Spark v2.4.4). Ситуация может измениться в более поздних версиях.

Что вы можете сделать, это создать дополнительные Kubernetes Service (Spark Monitoring Service, например, типа Cluster IP) для каждого задания Spark после отправки задания с помощью SparkSubmit, для экземпляр работает spark-submit ... && kubectl apply .... Или используйте любой из доступных клиентов Kubernetes с выбранным языком.

Обратите внимание, что вы можете использовать Kubernetes OwnerReference для настройки автоматического c Service удаления / G C в Spark Driver Pod delete.

Затем вы можете указать значения ServiceMonitor через Prometheus Operator Helm:

prometheus:
  additionalServiceMonitors:
     - name: spark-metrics           # <- Spark Monitoring Service name
      selector:
        matchLabels:
          k8s-app: spark-metrics     # <- Spark Monitoring Service label
      namespaceSelector:
        any: true
      endpoints:
      - interval: 10s
        port: metrics                # <- Spark Monitoring Service port name

Помните о том, что Spark не предоставляет способ чтобы настроить Spark Pod s, поэтому ваши порты Pod, которые должны отображать метрики, не отображаются на уровне Pod и не будут доступны через Service. Чтобы преодолеть это, вы можете добавить дополнительный оператор EXPOSE ... 8088 в Dockerfile и перестроить образ Spark.

Это руководство должно помочь вам настроить мониторинг Spark с помощью стратегии PULL, используя, например, Jmx Exporter .

Существует альтернатива (хотя она рекомендуется только для кратковременных заданий Spark, но вы можете попробовать ее в своей среде, если не выполняете огромных рабочих нагрузок):

Сделав так, что ваши Spark Pod будут PU * Метрики 1050 * к шлюзу и Prometheus будут вытягивать их из шлюза в следующем порядке.

Вы можете сослаться на таблицу Spark Monitoring Helm с объединением оператора Prometheus и Prometheus Pushgateway.

Надеюсь, это поможет.

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