+1 for the idea, thanks Daniel! I agree that multi-executor and pod
templates should be 2.1.

T.

On Wed, Aug 12, 2020 at 5:13 PM Daniel Imberman <daniel.imber...@gmail.com>
wrote:

> (Also funny enough we could use a lot of the existing infrastructure int
> 1.10 to create that migration script. Would just need to take the python
> dictionary and use the python yaml library)
>
> via Newton Mail [
> https://cloudmagic.com/k/d/mailapp?ct=dx&cv=10.0.50&pv=10.15.5&source=email_footer_2
> ]
> On Wed, Aug 12, 2020 at 8:09 AM, Daniel Imberman <
> daniel.imber...@gmail.com> wrote:
> 100% agreed on timing. I think 2.0 should be for the breaking aspect
> (losing the configurations) and then 2.1/2.2 we can start adding on the new
> features. I also like the idea of a migration tool. We can make a script
> that takes your airflow.cfg and converts that into a yaml file.
>
> via Newton Mail [
> https://cloudmagic.com/k/d/mailapp?ct=dx&cv=10.0.50&pv=10.15.5&source=email_footer_2
> ]
> On Wed, Aug 12, 2020 at 7:48 AM, Jarek Potiuk <jarek.pot...@polidea.com>
> wrote:
> Big +1. All the arguments are very appealing to me and simplifying the
> Kubernetes Executor down to YAML-configurable one seems like a no-brainer
> especially if we provide some migration tools. I've lost countless hours on
> debugging some configuration problems, simply because the relevant
> Kubernetes-related configuration was in the least expected place - i.e.
> airflow.cfg. YAML configuration.
>
> I am also a big fan of both 1. and 2. I've implemented a POC of
> queue-based multi-scheduler once but having it embedded as part of core
> Airflow rather than based it on queues (which are basically a Celery
> Executor concept) is I think much better approach. Both 1. and 2. are cool.
>
> Now - question about timing. If we decide to go that route - my view is
> that simplifying Kubernetes should be an Airflow 2.0 task - alongside more
> comprehensive tests (which will be much easier to write in this case). The
> new features/ideas 1. 2. for KE I think should come after that - when we
> release and stabilize 2.0. Sounds like great candidates for 2.1 to me.
>
> J.
>
>
> On Wed, Aug 12, 2020 at 4:24 PM Daniel Imberman <daniel.imber...@gmail.com
> >
> wrote:
>
> > Hello, fellow Airflowers! I hope you are all well in these trying times.
> >
> >
> > With the recent launch of Airflow 2.0 preparation, it now seems like a
> > good time to review the project's state and where we can fit in some
> > breaking changes that will improve the project for the future.
> >
> >
> > When we first created the KubernetesExecutor, we had two goals in mind.
> > The first goal was to improve the airflow Auto scaling story. Previously,
> > airflow users would have to manually provision celery workers, which
> could
> > lead to wasted resources or missed SLAs. The other goal was to introduce
> a
> > community that was not yet well versed in the Kubernetes API to the
> > Kubernetes system.
> >
> >
> > To ease the community's transition, we abstracted many of the
> complexities
> > of creating a Kubernetes object. We chose to offer a limited number of
> > configurations and keep much of the pod creation process internal to
> > airflow. In the short-term, this system lowered the barrier to entry.
> Over
> > time, however, this abstraction has become a nightmare of tech debt as
> the
> > Kubernetes API is expensive and constantly changing.
> >
> >
> > With this in mind, I think it's time for us to consider a more
> > straightforward approach that takes the complexity out of Airflow and
> > offers the full Kubernetes API to the airflow user.
> >
> >
> > What I'm proposing here is pretty straightforward. We remove all
> > Kubernetes pod creation configurations from the airflow.cfg and instead
> > offer only one way to use the KubernetesExecutor: with a YAML file.
> >
> >
> > We can easily supply all of the configurations to the KubernetesExecutor
> > by offering example YAMLs (git sync mode is just a sidecar and an init
> > container, DAG volumes are just an example volume and volume mount,
> etc.).
> >
> >
> > This system would simplify a user's ability to predict what a pod will
> > look like once it is launched by airflow. They will know it's a base pod
> > and will be able to simply modify the pod object using the executor
> config
> > and the pod mutation hook.
> >
> >
> >
> >
> >
> >
> >
> > This simplification could also lead to some pretty great new features in
> > the KubernetesExecutor
> >
> >
> > Idea 1: Picking a pod_template_file per-task
> > Along with the existing customization with the executor config, solely
> > relying on pod files can allow users to pick the pod template file that
> > they want to use as their base pod on a per-task basis. An Airflow
> engineer
> > could supply several pre-made templates for their data scientists to
> reduce
> > the amount of customization an airflow user would need to use.
> >
> >
> > Idea 2: Merging the KubernetesExecutor into the CeleryExecutor
> > One idea that we've been excited about recently has been the idea of
> > creating merged Celery and Kubernetes executor. This hybrid executor
> would
> > default to launching celery workers with KEDA and would have the option
> to
> > launch individual tasks using the Kubernetes executor when a user wants
> > isolation or customization. Simplifying the Kubernetes executor reduces
> the
> > number of fail-points that this merged executor would need to account
> for.
> >
> >
> >
> > What would we need to do to implement this?
> > The good news here is that the hard work has already been done! As of
> > AIRFLOW-5413 [https://issues.apache.org/jira/browse/AIRFLOW-5413] by
> > David Lum, airflow already has the ability to use base worker pods on a
> > template file. This would involve primarily code deletion and very little
> > new code.
> >
> >
> > Thank you for your time and I look forward to the community’s discussion.
> >
> > Daniel
>
>
>
> --
>
> Jarek Potiuk
> Polidea <https://www.polidea.com/> | Principal Software Engineer
>
> M: +48 660 796 129 <+48660796129>
> [image: Polidea] <https://www.polidea.com/>

Reply via email to