-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
We currently run KinD clusters on our Apple Silicon Macs with a mix of amd64 images and multi-platform (amd64 and arm64) manifests.
Docker 29 switched the default image store to containerd. This causes docker push ... to push multi-platform manifests by default, even when the local build only produced a single platform image. Running docker push --platform linux/amd64, for example, can force a single amd64 image to be pushed rather than a manifest.
Our testing with this change revealed that while running a non-manifest amd64 image works in KinD on an Apple Silicon Mac, running a manifest with a single amd64 image in it does not. Pods attempting to run such images fail to start with this error: no match for platform in manifest: not found.
We're trying to investigate options moving forward, including:
- Updating all
docker pushcommands for non-manifest builds throughout our entire company to add--platform linux/amd64- This wouldn't help for any 3rd party single architecture manifests
- Forcing Docker Engine to use the non-default storage engine on our build system after upgrading to Docker 29
- It is unclear how long this configuration will be supported and the non-default storage engine will be supported
Questions:
- Is this expected behavior? Should KinD support single-architecture manifest lists?
- Is there a containerd configuration within KinD nodes that could handle
- Are there recommended workarounds besides forcing
docker push --platform ...?
I also opened this discussion in Moby about the default behavior changing: moby/moby#51532