feat: support SOCI snapshotter's lazy loading mode #957
+29
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Trying to pull a SOCI manifest / image lazily current results in an error as
/dev/fuseis not mounted.See soci-snapshotter codebase and the following error logs:
{"binary":"fusermount","error":"exec: \"fusermount\": executable file not found in $PATH","key":"k8s.io/106/extract-876213091-quzh sha256:...","level":"info","mountpoint":"/var/lib/containerd/io.containerd.snapshotter.v1.soci/snapshotter/snapshots/72/fs","msg":"fusermount binary not installed; trying direct mount","parent":"sha256:...","time":"2026-01-25T14:38:24.154801378Z"} {"error":"no such file or directory","key":"k8s.io/106/extract-876213091-quzh sha256:...","level":"error","mountpoint":"/var/lib/containerd/io.containerd.snapshotter.v1.soci/snapshotter/snapshots/72/fs","msg":"failed to make filesystem server","parent":"sha256:...","time":"2026-01-25T14:38:24.154882399Z"} {"error":"no such file or directory","key":"k8s.io/106/extract-876213091-quzh sha256:...","level":"warning","msg":"failed to prepare remote snapshot","parent":"sha256:...","remote-snapshot-prepared":"false","time":"2026-01-25T14:38:24.154897739Z"}I am using custom configuration for SOCI in Talos machine config:
although the default SOCI configuration from this repo fails as well (as soci_v2 is the default), leading me to believe this extension never worked properly when using lazy pull mode. It might have worked when using parallel pull mode but I haven't tested myself.
Note that the additions were adopted from
estargzextension, which provides similar functionality.There is also an issue where
fusermount3fromfuseextension is not correctly discovered by SOCI (as they only check for presence offusermount), but I believe it's not blocking as there is a fallback and the issue can be fixed upstream (to match estargz behaviour) orfuseextension could also symlinkfusermount3tofusermount, please let me know whether you'd also accept this contribution or whether I should submit a patch for SOCI. Thanks!cc @frezbo & @smira