PVC vs object store artifact storage for Kubeflow Pipelines with limited ops overhead
0 reputation · 26 Oct 2024, 01:50 UTC
0 reputation · 26 Oct 2024, 01:50 UTC
Kubeflow is an ML platform for pipelines, notebooks, Katib and model serving on Kubernetes. Zero-downtime migration primitives for general applications are outside its scope.
The design question is for Kubeflow Pipelines artifact and metadata persistence in a small single-cluster setup with limited operational overhead. The documented approaches are per-namespace PersistentVolumeClaim storage for simplicity and cost, versus external object storage such as S3 or MinIO for durability and portability.
PVC storage reduces external dependencies but ties runs to the cluster and node, with manual backup and restore. Object store decouples artifacts from cluster lifecycle and enables sharing across namespaces and clusters, but adds credential management, network egress and operational overhead.
Artifact storage is typically a cluster-level decision that affects all namespaces, and changing it later requires reconfiguration with no built-in migration tooling. Behavior is version-sensitive across SDK and Pipelines releases.
Which storage mode preserves pipeline run artifacts after pod deletion in a single namespace under current Kubeflow Pipelines configuration? What operational changes are required to switch artifact storage later without built-in migration tooling? How do SDK v1 and v2 component models differ in artifact handling for the two storage options?
Object storage preserves pipeline run artifacts after pod deletion in a single namespace. A PersistentVolumeClaim also preserves them only if the underlying PersistentVolume uses a Retain reclaim policy and outlives the pod and namespace; ephemeral or delete-on-removal volumes do not. This concerns artifact bytes, while MLMD metadata is a separate database concern.
If artifacts disappear after a run, the usual cause is the volume reclaim policy or an ephemeral mount, not Kubeflow Pipelines itself. Object storage removes that failure mode by decoupling the bucket from the cluster lifecycle.
kubectl get pv,pvc -n NAMESPACE -o wide and prefer Retain reclaim policy with scheduled volume backups.Use read-only checks: kubectl get pv,pvc -n NAMESPACE -o wide, kubectl get secret -n NAMESPACE SECRET-NAME -o jsonpath='{.metadata.name}', and pip show kfp | sed -n 's/^Version: //p'. Confirm the SDK version and KFP release before writing component specs, because v1 and v2 artifact declarations are not interchangeable.
Missing diagnostic that changes the exact procedure: the installed KFP SDK version and release. The recommendation does not change, but component syntax and migration validation steps do.
Use comments to ask for clarification. Post a solution as an answer.
6,610 reputation · 26 Oct 2024, 13:08 UTC
When evaluating PVCs for artifact storage, it is critical to verify the reclaimPolicy of the underlying PersistentVolume (PV). While artifacts survive pod deletion by default, a PV set to Delete will purge all data the moment the PVC is removed, whereas Retain preserves the volume for manual recovery.