Environment
Host:
- Ubuntu 24.04.3 LTS (same host where MicroK8s 1.34 works)
- LXD (version 6.6 - but it is the same for 5.21/stable etc)
Guest:
- Ubuntu container (ubuntu v 22.04
- security.nesting=true
- same LXD profile and configuration used previously with MicroK8s 1.34
Problem
After upgrading from MicroK8s 1.34 to 1.35+ inside an LXD container, Kubernetes pods cannot start because the sandbox image cannot be pulled.
Example pod event:
FailedCreatePodSandBox:
failed to get sandbox image "registry.k8s.io/pause:3.10":
failed to pull and unpack image "registry.k8s.io/pause:3.10":
unable to initialize unpacker:
no unpack platforms defined: invalid argument
Version comparison
MicroK8s 1.34/stable
microk8s ctr version:
Client/Server:
Version: v1.7.28
Image pull works:
microk8s ctr images pull registry.k8s.io/pause:3.10
Result:
unpacking linux/amd64 ...
done
MicroK8s 1.35/stable
microk8s ctr version:
Client/Server:
Version: v2.1.3
Image pull fails:
microk8s ctr images pull registry.k8s.io/pause:3.10
Result:
unable to initialize unpacker:
no unpack platforms defined: invalid argument
MicroK8s 1.36/stable
microk8s ctr version:
Client/Server:
Version: v2.2.3
Image pull fails with the same error.
Additional observations
The issue appears to be related to the new containerd 2.x image transfer path.
This command fails:
microk8s ctr images pull registry.k8s.io/pause:3.10
However this succeeds:
microk8s ctr images pull --local registry.k8s.io/pause:3.10
Output ends with:
unpacking linux/amd64 ...
done
OverlayFS / snapshotter status
overlayfs snapshotter:
io.containerd.snapshotter.v1 overlayfs linux/amd64 ok
Kernel support:
grep overlay /proc/filesystems
nodev overlay
lsmod | grep overlay
overlay loaded
Architecture:
uname -m
x86_64
Expected behavior
Image pulls should work in LXD containers as they do with MicroK8s 1.34/containerd 1.7.28.
Actual behavior
Image pulls fail on MicroK8s 1.35+ (containerd 2.x) with:
unable to initialize unpacker: no unpack platforms defined
Environment
Host:
Guest:
Problem
After upgrading from MicroK8s 1.34 to 1.35+ inside an LXD container, Kubernetes pods cannot start because the sandbox image cannot be pulled.
Example pod event:
FailedCreatePodSandBox:
failed to get sandbox image "registry.k8s.io/pause:3.10":
failed to pull and unpack image "registry.k8s.io/pause:3.10":
unable to initialize unpacker:
no unpack platforms defined: invalid argument
Version comparison
MicroK8s 1.34/stable
microk8s ctr version:
Client/Server:
Version: v1.7.28
Image pull works:
microk8s ctr images pull registry.k8s.io/pause:3.10
Result:
unpacking linux/amd64 ...
done
MicroK8s 1.35/stable
microk8s ctr version:
Client/Server:
Version: v2.1.3
Image pull fails:
microk8s ctr images pull registry.k8s.io/pause:3.10
Result:
unable to initialize unpacker:
no unpack platforms defined: invalid argument
MicroK8s 1.36/stable
microk8s ctr version:
Client/Server:
Version: v2.2.3
Image pull fails with the same error.
Additional observations
The issue appears to be related to the new containerd 2.x image transfer path.
This command fails:
microk8s ctr images pull registry.k8s.io/pause:3.10
However this succeeds:
microk8s ctr images pull --local registry.k8s.io/pause:3.10
Output ends with:
unpacking linux/amd64 ...
done
OverlayFS / snapshotter status
overlayfs snapshotter:
io.containerd.snapshotter.v1 overlayfs linux/amd64 ok
Kernel support:
grep overlay /proc/filesystems
nodev overlay
lsmod | grep overlay
overlay loaded
Architecture:
uname -m
x86_64
Expected behavior
Image pulls should work in LXD containers as they do with MicroK8s 1.34/containerd 1.7.28.
Actual behavior
Image pulls fail on MicroK8s 1.35+ (containerd 2.x) with:
unable to initialize unpacker: no unpack platforms defined