-
Notifications
You must be signed in to change notification settings - Fork 1k
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
no image found in manifest list for architecture amd64, variant "", OS linux #6457
Comments
@mtrmac @nalind @giuseppe @vrothberg is there a knob that cri-o isn't setting correctly? |
I wished the question would be more narrow. I don't want to browse through the ListImages call stack and look for potential errors. Podman uses libimage which does as follows: https://github.com/containers/common/blob/main/libimage/runtime.go#L544 |
I think the relevant CRI-O code is cri-o/internal/storage/image.go Line 219 in 6f7b7c2
@image-id image reference, and that does not specify which of the manifest blobs to use. I think it could be the case that resolving that reference ends up choosing a manifest list instead of a per-arch manifest. CRI-O then calls OCIConfig and Inspect , which are relevant to a single per-arch variant, and require choosing a per-arch variant from the manifest list — and that (broadly correctly) wants to match the current run-time architecture.
c/image doesn’t understand that the manifest list is “sparse” and that it has to choose the architecture that matches the rest of the At a first guess, c/image should contain some kind of dual of the Turning that error into a warning, and silently ignoring images that can’t be inspected, might be an option for CRI-O, OTOH it would make Kubelet’s understanding of the set of images, and possibly recovery from corrupt images, harder. |
A friendly reminder that this issue had no activity for 30 days. |
Closing this issue since it had no activity in the past 90 days. |
Filed containers/image#1929 for this so that the knowledge is not completely lost. |
What happened?
The issue started when I cross-built images for another architecture (arm64).
The error message also appears in the journald log for service kubelet every few seconds.
What did you expect to happen?
I expect to be able to list images using 'crictl images' without getting an error message.
How can we reproduce it (as minimally and precisely as possible)?
Build images in another architecture using buildah and qemu-user-static. Both crio/crictl can no longer list images.
Anything else we need to know?
Alternatively, I can still list images using Podman without errors, e.g. 'podman images'. This leads me to believe that the underlying storage is not corrupt and that this is a bug with crio/crictl.
CRI-O and Kubernetes version
OS version
Additional environment details (AWS, VirtualBox, physical, etc.)
The text was updated successfully, but these errors were encountered: