-
Notifications
You must be signed in to change notification settings - Fork 73
Description
What happened:
With Windows Containers now being downward compatible (https://techcommunity.microsoft.com/t5/containers/windows-server-2022-and-beyond-for-containers/ba-p/2712487) I deployed the example Windows app with the multiarch image mcr.microsoft.com/windows/servercore:ltsc2022 on a 21H2 host. The multiarch image doesn't contain an entry with the exact same build number in the manifest list (os.version field) leading to the following error:
Warning Failed 6s kubelet Failed to pull image "mcr.microsoft.com/windows/servercore:ltsc2022": rpc error: code = NotFound desc = failed to pull and unpack image "mcr.microsoft.com/windows/servercore:ltsc2022": no match for platform in manifest: not found
When using mcr.microsoft.com/windows/servercore:ltsc2022-amd64 instead (no manifest list) it works fine.
What you expected to happen:
When referencing an image with a manifest list not containing the exact same build number it should automatically choose the one with closest build number. This makes sure that everyone producing Windows multiarch images doesn't need to include every possible build number within the manifest list which is perfectly fine due to the downwards compatibility.
How to reproduce it (as minimally and precisely as possible):
- Prepare a cluster with a Windows 21H2 node
- Deploy the example app with a
mcr.microsoft.com/windows/servercore:ltsc2022image and get the error above - Update to use the image
mcr.microsoft.com/windows/servercore:ltsc2022-amd64instead and verify that it works.
Anything else we need to know?:
This doesn't seem to be a bug within containerd as the following works:
PS C:\> .\ctr.exe -n k8s.io run mcr.microsoft.com/windows/servercore:ltsc2022 mycont cmd /c ver
Microsoft Windows [Version 10.0.22000.230]
Environment:
- Kubernetes version (use
kubectl version): v1.22.1 - Cloud provider or hardware configuration: Hyper-V VM
- OS: Windows 11 Version 10.0.22000.194
- Others: containerd v1.5.5