flinkk8soperator icon indicating copy to clipboard operation
flinkk8soperator copied to clipboard

Sidecar container for Beam SDK

Open tweise opened this issue 5 years ago • 8 comments

The proposal to support Beam Python applications with the Flink k8s operator requires the addition of a sidecar container for the Beam SDK worker pool to the Flink task manager pod.

The sidecar container needs to be specified with image, resources and entry point, but generally it is just another container that has access to external resources similar to the task manager container.

Since there isn't anything Beam specific per se, should the CRD offer something like a taskManagerSideCar section that could also be used for other containers the user may wish to run alongside a task manager in the same pod?

tweise avatar Sep 09 '19 22:09 tweise

My preference is that we do make it beam-specific rather than generic. There are already mechanisms available for users to inject generic side cars with whatever logic they want (i.e., mutating admission webhooks, which at lyft we use to inject various ops sidecars). In general, I think it's hard to make the CRD flexible enough to satisfy all use cases for something like this, and it's better to allow users to implement this themselves.

Adding explicit beam support to the CRD (or, as I think I prefer, creating a separate BeamApplication CRD) should improve the user experience by automatically creating the sidecar with the appropriate configuration.

mwylde avatar Sep 10 '19 00:09 mwylde

Just a note that I'm going to follow-up on this. But in the meantime, a generalized sidecar container concept in the CRD would probably also benefit other Flink applications.

tweise avatar Oct 16 '19 21:10 tweise

@tweise is the side-car approach still relevant after your latest discoveries/realizations that the best option to run portable Beam pipelines on k8s is to create container images that have both Flink and the SDK dependencies?

chadrik avatar Nov 04 '19 20:11 chadrik

@chadrik the main advantage is that sidecar would allow to use the stock SDK container images independent of Flink. This might become more important as we move to cross-language pipelines. At the moment though, we are not going to rely on this for our internal deployment. I will add an example for the single container approach in the next few weeks. Are you waiting for that?

tweise avatar Nov 04 '19 20:11 tweise

I will add an example for the single container approach in the next few weeks. Are you waiting for that?

It's not holding us up. Having it in the next few weeks will be fine.

chadrik avatar Nov 04 '19 20:11 chadrik

@chadrik the example is pretty much ready to go, waiting for the 2.17 Beam release: https://github.com/lyft/flinkk8soperator/pull/134

tweise avatar Dec 04 '19 03:12 tweise

Thanks for the update. Perfect timing as we are getting started on this right now.

On Tue, Dec 3, 2019 at 7:02 PM Thomas Weise [email protected] wrote:

@chadrik https://github.com/chadrik the example is pretty much ready to go, waiting for the 2.17 Beam release: #134 https://github.com/lyft/flinkk8soperator/pull/134

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/lyft/flinkk8soperator/issues/102?email_source=notifications&email_token=AAAPOE65JA3CBSKBEDG3HFLQW4MTHA5CNFSM4IVA2PN2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEF3R3HQ#issuecomment-561454494, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAPOE6HQDNNVLEGU7OEGBTQW4MTHANCNFSM4IVA2PNQ .

chadrik avatar Dec 04 '19 03:12 chadrik

Hi, is there any progress on this? We'd love to use sidecar containers for loadbalacing minio traffic using https://blog.min.io/introducing-sidekick-a-high-performance-load-balancer/.

Thanks, D.

dmvk avatar Apr 29 '20 12:04 dmvk