Deployment with image "busybox" always fails (but deos work with any others)

Cluster information:

Kubernetes version: v1.28.7
Cloud being used: Virtualbox
Installation method: Kubernetes Cluster VirtualBox
Host OS: Ubuntu 22.04.3 LTS
CNI and version: calico
CRI and version: containerd://1.7.2

I created a test-deployment like so:

kubectl create deployment test-deployment --image=busybox --dry-run=client --output=yaml > test-deployment.yaml
kubectl apply -f test-deployment.yaml

For some reason it fails to create POD with following ERROR / WARNING (and it is not clear to me what is wrong):

Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  34s                default-scheduler  Successfully assigned default/test-deployment-6b4c9bbbc7-mfk5m to worker01
  Normal   Pulled     29s                kubelet            Successfully pulled image "busybox" in 3.907s (3.907s including waiting)
  Normal   Pulled     27s                kubelet            Successfully pulled image "busybox" in 1.148s (1.148s including waiting)
  Normal   Pulling    10s (x3 over 33s)  kubelet            Pulling image "busybox"
  Normal   Created    9s (x3 over 29s)   kubelet            Created container busybox
  Normal   Started    9s (x3 over 29s)   kubelet            Started container busybox
  Normal   Pulled     9s                 kubelet            Successfully pulled image "busybox" in 1.294s (1.294s including waiting)
  Warning  BackOff    8s (x3 over 26s)   kubelet            Back-off restarting failed container busybox in pod test-deployment-6b4c9bbbc7-mfk5m_default(7cb42324-eb2a-421d-907c-d20fc412cd4a)

I do see that my cluster has busybox image already pulled to the LOCAL CONTAINER RUNTIME:

sudo ctr -n k8s.io image ls | grep busy
docker.io/library/busybox:latest                                                                                application/vnd.oci.image.index.v1+json                   sha256:9ae97d36d26566ff84e8893c64a6dc4fe8ca6d1144bf5b87b2b85a32def253c7 2.1 MiB   linux/386,linux/amd64,linux/arm/v5,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/mips64le,linux/ppc64le,linux/riscv64,linux/s390x io.cri-containerd.image=managed
docker.io/library/busybox@sha256:9ae97d36d26566ff84e8893c64a6dc4fe8ca6d1144bf5b87b2b85a32def253c7               application/vnd.oci.image.index.v1+json                   sha256:9ae97d36d26566ff84e8893c64a6dc4fe8ca6d1144bf5b87b2b85a32def253c7 2.1 MiB   linux/386,linux/amd64,linux/arm/v5,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/mips64le,linux/ppc64le,linux/riscv64,linux/s390x io.cri-containerd.image=managed

If I replace busybox image with eg. nginx - no problems:

Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  71s   default-scheduler  Successfully assigned default/test-deployment-5746d5bc6f-svskj to worker01
  Normal  Pulling    70s   kubelet            Pulling image "nginx"
  Normal  Pulled     50s   kubelet            Successfully pulled image "nginx" in 19.483s (19.483s including waiting)
  Normal  Created    50s   kubelet            Created container nginx
  Normal  Started    49s   kubelet            Started container nginx

Question:
What am I doing wrong?

Hi,

Busybox has no entrypoint/cmd by default. You need to tell busybox to do smth (ex: sleep 1d). Otherwise it will keep failing with exit code 0.