-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Auto-mount emptyDir volumes for k8sapi/kubelet
or runAsNotRoot: true
(?) executors
#2679
Comments
We use PNS ourselves - so this would be a great one for a community contribution. |
As far as I know, it’s not possible now. |
Argo already adds volumes to capture artifacts for docker executor. Why not for other executors? If Argo tells us to "mount an emptyDir volume", why can't it just auto-mount that volume itself? |
Our users need artifacts to work for some non-docker executor. |
I agree with @Ark-kun. The controller should add emptydir volume automatically if non-docker executors configured. This is a nice feature and will reduce many support questions. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Let's keep this up |
Hey everyone, we use the "k8sapi" executor to run Argo on Openshift. Wanted to see if there is progress on this issue? |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
I've spent some time updating the documentation for the executors and how and when to use [emptyDir]https://argoproj.github.io/argo/empty-dir/). TL;DR:
It is reasonable for the |
@Ark-kun I'm not sure this is correct? |
AFAIK, Argo tries to use mirrored volumes to make the input artifacts accessible to the main container and capture the output artifacts in the wait container. See https://github.com/argoproj/argo/blob/4de64c618dea85334c0fa04a4dbc310629335c47/workflow/controller/workflowpod.go#L793 https://github.com/argoproj/argo/blob/4de64c618dea85334c0fa04a4dbc310629335c47/workflow/controller/workflowpod.go#L896 |
Perhaps we should add logic such that for every output artifact there should be an emptyDir mounted at its parent directory unless there is another volume already mounted underneath. |
thank you @Ark-kun |
I'm not sure this has been fixed. |
Re-opened. This got closed by a PR and should not have been close. Would anyone be interested in investigating how to fix this? |
k8sapi/kubelet
or runAsNotRoot: true
(?) executors
This would be for |
…tputs. Closes argoproj#2679 Signed-off-by: Alex Collins <[email protected]>
|
I'm going to wait for user testing before proceeding. |
bump! please let me know if you really want this by testing the controller |
I think it is safe to say that we do really want this. Just have a look at the number of upvotes for such a technical issue and the other similar bugreports in kubeflow etc. It might help if you could provide images for testing or even some short instructions for a kubernetes cluster. Then everyone can test his workloads. Otherwise everyone has to dig into how to build the images etc. |
I think this issue will be moot with the Emissary Executor. What is the Emissary Executor? Why?
@terrytangyuan @Ark-kun would you be able to test this new executor, please? You need dev builds of the controller and executor:
|
I have tested it with kubeflow pipelines 1.3 There are only minor issues.
Since kubeflow pipelines are going to use argo 2.12 in the future, it would be good if the emissary executor is compatible with 2.12. |
I don't plan to backport the emissary to v2.12. It's a big and therefore risky change. |
I think v2.12 is the right version for Kubeflow. I'd like us to get more involved and help out with Kubeflow more. Can you add me to the PR you're working on please? |
Well if the interfaces are somewhat compatible its fine. Then i just have to use the upstream argoexec and workflow-controller images for the emissary executor. That worked for 2.7.5 with 2.11 images as far as i remember. kubeflow/pipelines#4553 is the issue for argo 2.12 in kubeflow |
Summary
Will there be support for outputs from base image layer instead of using emptyDir to save params/artifacts when using the kubelet or k8s api executors?
Motivation
I was running Kubeflow Pipelines with the container runtime executor as kubelet, but I kept hitting errors with the pipelines completing their tasks.
I then tried the https://github.com/argoproj/argo/blob/master/examples/artifact-passing.yaml example to try to narrow down the problem and realized that I had to mount an emptyDir volume in order for it to work.
My question is will there be support for outputs from base image layer with k8s api and kubelet executors in the future? Or is it not possible due to the way these executors work?
The text was updated successfully, but these errors were encountered: