Kubernetes HorizontalPodAutoscaler для подов, порождаемых группами Airflow DAG, которые используют KubernetesPodOperator
Я использую воздушный поток CeleryExecutor
развернут в кластере k8s с использованием helm
. У меня определено количество рабочих. Первоначально я думал, что это максимальное количество рабочих, но похоже, что рабочие модули всегда активны. Таким образом, это становится статическим числом рабочих. Чтобы разрешить этот статический набор рабочих, я хочу сделать его динамическим, используяHorizontalPodAutoScaler
. Ну я используюKubernetesPodOperator
Это означает, что рабочие не выполняют работу / задачу сами, а создают новый ресурс (под) для каждой задачи. Поэтому для меня возникает проблема реализацииHorizontalPodAutoScaler
потому что мне нужно масштабировать количество рабочих, но поскольку рабочие не выполняют эту работу, он не сможет правильно измерить использование ЦП / памяти для увеличения / уменьшения. я думаюHorizontalPodAutoScaler
может использоваться для работы воздушного потока KubernetesExecutor
но не уверен насчет CeleryExecutor
. В основном мне нужно реализоватьHorizontalPodAutoScaler
на основе показателей модулей, которые KubernetesPodOperator
создаст, а затем увеличит / уменьшит количество рабочих.
Итак, как мне использовать HorizontalPodAutoScaler
или есть ли другая альтернатива, чтобы сделать размер рабочего стола динамическим?
1 ответ
Если вы используете KubernetesExecutor, то добавлять HorizontalPodAutoScaler нет необходимости, поскольку он масштабирует модули на основе матрицы, технически KubernetesExecutor создает новый модуль каждый раз для DAG, который будет выполняться, да, вы можете определить ресурс в DAG для модуля. Если воздушный поток развернут на кубе, то celeryExecutor не очень хорошая идея.