-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
VolumeOp doesn't support GC after workflow deletion #1779
Comments
What is the practical consequence of this? I'm having an issue with bound PVCs from pipelines that ran long ago. |
Hi all, /assign elikatsis |
As I mentioned in the previous comment, I've been working on solving this issue using An OwnerReference requires two basic fields that refer to the actual Kubernetes resource: PR #1720, however, changed I'm not sure I understand the rationale behind this. [ cc @IronPan ] |
I would be very interested in this. We have workflows where we sometimes need to dump out fairly large files to disk, but they are only relevant while the component is executing. Currently we have to always manually delete the PVCs afterwards |
Willing to help, and will send a PR for adding support a delete PVC op. |
Hi there! Pinging again for an answer to this comment: #1779 (comment) Since it's been some time (KFP has had many releases, KF ships with a KFP version containing #1720), can we move to using a different Argo magic string and not override the existing If we go with |
I generally agree with the suggestion. |
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 don't think it's fixed now, please keep open until we fix. |
Is there any workaround to remove the actual volume (disk) after the pipeline finishes? my_volume = dsl.VolumeOp(
name="create-volume",
resource_name="asd",
size="10Gi",
modes=dsl.VOLUME_MODE_RWO,
)
dsl.ResourceOp(
name="delete-volume",
k8s_resource=my_volume.k8s_resource,
action="delete"
) still leaves the unused disk in GCE. |
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. |
This is still a sorely-needed feature for us, would be good to keep the ticket open until it is resolved. |
Agree with @jackwhelpton |
Hey, did anyone found any workaround for this? |
@kubeflow/wg-pipeline-leads I think this is a well-known issue and all the cloud-provider should get the same issue. As I can see, we met similar issue here. Can you put some efforts on this issue and I can help as well? /cc @Bobgy |
/assign @chensun |
Since we have now upgraded Argo client version used by the backend (apart from the deployment) we can take advantage of the Using this we will be able to set an owner reference of the workflow to PVCs created via the SDK, without having to deal with the [odd] design described above (#1779 (comment)). @Bobgy I'm preparing a PR for this and will open it pretty soon :) |
@elikatsis Feel free to cc me the PR Would like to help as well |
Argo supports a field in the ResourceTemplate that makes the controller add an owner reference of the workflow to the created resource since v2.4.0 [1]. With the upgrade of Argo client [2] and deployment [3] we are now able to exploit it. We set it to 'false' by default on all ResourceOps (actually, leave it empty) and 'true' for VolumeOps. This allows the garbage collection of PVCs upon workflow cleanup without any further change [4]. [1] https://github.com/argoproj/argo/blob/v2.4.0/pkg/apis/workflow/v1alpha1/workflow_types.go#L1044-L1045 [2] kubeflow#4498 [3] kubeflow#3537 [4] kubeflow#1779 Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>
…ow#1779 Argo supports a field in the ResourceTemplate that makes the controller add an owner reference of the workflow to the created resource since v2.4.0 [1]. With the upgrade of Argo client [2] and deployment [3] we are now able to exploit it. We set it to 'false' by default on all ResourceOps (actually, leave it empty) and 'true' for VolumeOps. This allows the garbage collection of PVCs upon workflow cleanup without any further change [4]. [1] https://github.com/argoproj/argo/blob/v2.4.0/pkg/apis/workflow/v1alpha1/workflow_types.go#L1044-L1045 [2] kubeflow#4498 [3] kubeflow#3537 [4] kubeflow#1779 Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>
…ow#1779 Argo supports a field in the ResourceTemplate that makes the controller add an owner reference of the workflow to the created resource since v2.4.0 [1]. With the upgrade of Argo client [2] and deployment [3] we are now able to exploit it. We set it to 'false' by default on all ResourceOps (actually, leave it empty) and 'true' for VolumeOps. This allows the garbage collection of PVCs upon workflow cleanup without any further change [4]. [1] https://github.com/argoproj/argo/blob/v2.4.0/pkg/apis/workflow/v1alpha1/workflow_types.go#L1044-L1045 [2] kubeflow#4498 [3] kubeflow#3537 [4] kubeflow#1779 Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>
…ow#1779 Argo supports a field in the ResourceTemplate that makes the controller add an owner reference of the workflow to the created resource since v2.4.0 [1]. With the upgrade of Argo client [2] and deployment [3] we are now able to exploit it. We set it to 'false' by default on all ResourceOps (actually, leave it empty) and 'true' for VolumeOps. This allows the garbage collection of PVCs upon workflow cleanup without any further change [4]. [1] https://github.com/argoproj/argo/blob/v2.4.0/pkg/apis/workflow/v1alpha1/workflow_types.go#L1044-L1045 [2] kubeflow#4498 [3] kubeflow#3537 [4] kubeflow#1779 Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>
…ow#1779 Argo supports a field in the ResourceTemplate that makes the controller add an owner reference of the workflow to the created resource since v2.4.0 [1]. With the upgrade of Argo client [2] and deployment [3] we are now able to exploit it. We set it to 'false' by default on all ResourceOps (actually, leave it empty). Setting the field to 'true' for VolumeOps allows the garbage collection of PVCs upon workflow cleanup [4]. [1] https://github.com/argoproj/argo/blob/v2.4.0/pkg/apis/workflow/v1alpha1/workflow_types.go#L1044-L1045 [2] kubeflow#4498 [3] kubeflow#3537 [4] kubeflow#1779 Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>
Hi, I'm following along. Have we found a fix for this issue? We currently run many jobs in parallel, and having to go back to delete the disks after they are used can be a pain. Not to mention, it can get costly over time if users don't clean up their environment. |
@RoyerRamirez we've got #4831 targeting this but it's not merged yet. |
…ow#1779 Argo supports a field in the ResourceTemplate that makes the controller add an owner reference of the workflow to the created resource since v2.4.0 [1]. With the upgrade of Argo client [2] and deployment [3] we are now able to exploit it. We set it to 'false' by default on all ResourceOps (actually, leave it empty). Setting the field to 'true' for VolumeOps allows the garbage collection of PVCs upon workflow cleanup [4]. [1] https://github.com/argoproj/argo/blob/v2.4.0/pkg/apis/workflow/v1alpha1/workflow_types.go#L1044-L1045 [2] kubeflow#4498 [3] kubeflow#3537 [4] kubeflow#1779 Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>
…4831) Argo supports a field in the ResourceTemplate that makes the controller add an owner reference of the workflow to the created resource since v2.4.0 [1]. With the upgrade of Argo client [2] and deployment [3] we are now able to exploit it. We set it to 'false' by default on all ResourceOps (actually, leave it empty). Setting the field to 'true' for VolumeOps allows the garbage collection of PVCs upon workflow cleanup [4]. [1] https://github.com/argoproj/argo/blob/v2.4.0/pkg/apis/workflow/v1alpha1/workflow_types.go#L1044-L1045 [2] #4498 [3] #3537 [4] #1779 Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>
The PVC created from VolumeOp is not automatically recycled after workflow is deleted.
I wonder if owner reference can work with PVC when it is set with workflow's reference. If it works, we can provide an option in volumeop to set it when creating the PVC.
If it doesn't work, we should provide a way to either use Argo's volume API or support a delete PVC op in exit handler.
The text was updated successfully, but these errors were encountered: