Skip to content

Windows Container downward compatbility doesn't work when multiarch images don't contain host build number in manifest list #170

@lippertmarkus

Description

@lippertmarkus

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):

  1. Prepare a cluster with a Windows 21H2 node
  2. Deploy the example app with a mcr.microsoft.com/windows/servercore:ltsc2022 image and get the error above
  3. Update to use the image mcr.microsoft.com/windows/servercore:ltsc2022-amd64 instead 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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions