ray-project / kuberay

A toolkit to run Ray applications on Kubernetes
Apache License 2.0
963 stars 328 forks source link

Allow overriding just the args in submitter pod #2208

Open mickvangelderen opened 2 days ago

mickvangelderen commented 2 days ago

Why are these changes needed?

My submitter Pod's docker image has configured an ENTRYPOINT which I do not wish to override. I just want to set the args but kuberay will override the command when unspecified.

Related issue number

Checks

mickvangelderen commented 2 days ago

@andrewsykim I can invest some time to learn go and how to add tests, but first: are you okay with this breaking change? Anyone who currently uses ray and only specifies the args gets the command overridden. After this gets merged, that will no longer be the case. I am not sure what your stability promises are exactly.

andrewsykim commented 2 days ago

@andrewsykim I can invest some time to learn go and how to add tests, but first: are you okay with this breaking change? Anyone who currently uses ray and only specifies the args gets the command overridden. After this gets merged, that will no longer be the case. I am not sure what your stability promises are exactly.

I'm not sure to be honest , still thinking about it. In general we try our best not to break compatibility per our compatiblitiy promise: https://docs.ray.io/en/latest/cluster/kubernetes/references.html#kuberay-api-compatibility-and-guarantees

However, I haven't personally seen a lot of cases of overriding the submitter pod template and not sure how many users this will break.

andrewsykim commented 2 days ago

My submitter Pod's docker image has configured an ENTRYPOINT which I do not wish to override. I just want to set the args but kuberay will override the command when unspecified.

For your use-case, why not just override the ENTRYPOINT, to whatever you use in your container?

mickvangelderen commented 2 days ago

I'm not sure to be honest , still thinking about it.

Thank you for considering this idea.

For your use-case, why not just override the ENTRYPOINT, to whatever you use in your container?

My use-case is generic over docker images. I can not assume the ENTRYPOINT is anything in particular.

In general, it would help me a bunch if:

all use args instead of command so that if a Dockerfile provides ray thanks to some custom ENTRYPOINT, everything "just works".

Additionally, it would also be great if the entrypoint field in the RayJob spec was a string[]. If that is the case, ray can just append the entrypoint to the ray submitter command and use that as args. No one needs to spawn login shells and construct a correct shell string for '-c'.

I opened an issue to discuss this #2209, although that issue is currently geared towards making the submitter pod consistent with the head and worker.