Welcome to the Linux Foundation Forum!

3.2.17 Back-off restarting failed container

Options
keithshum
keithshum Posts: 2
edited December 2022 in LFD259 Class Forum

Hello fellow classmates,

Just like to share this with you guys, in case you are getting to this strange issue.
I got it worked finally and now thinking it must be the behavior of kubernetes dealing with images having CMD and ENTRYPOINT.

Issue is that I am able to podman run the simpleapp image and push to the local repository, however, kubectl create deployment (or kubectl run) refused to run and give this error.

$ kubectl describe pod sa1
...
Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  70s                default-scheduler  Successfully assigned default/sa1-79dd87d4fb-lzkg2 to worker1
  Normal   Pulled     70s                kubelet            Successfully pulled image "localhost/simpleapp" in 53.386827ms
  Normal   Pulled     69s                kubelet            Successfully pulled image "localhost/simpleapp" in 36.668932ms
  Normal   Pulled     55s                kubelet            Successfully pulled image "localhost/simpleapp" in 36.764437ms
  Normal   Pulling    28s (x4 over 70s)  kubelet            Pulling image "localhost/simpleapp"
  Normal   Created    28s (x4 over 70s)  kubelet            Created container simpleapp
  Normal   Started    28s (x4 over 70s)  kubelet            Started container simpleapp
  Normal   Pulled     28s                kubelet            Successfully pulled image "localhost/simpleapp" in 32.476ms
  Warning  BackOff    1s (x7 over 68s)   kubelet            Back-off restarting failed container

Many of Google searches say that it's caused by the image, almost liked there's nothing to be run at the container and it failed right the way.

I have also tried using some OS images pulled from Docker hub, liked Alpine and busybox, pretty much same thing here.

So, I tried another way... use ENTRYPOINT instead of CMD and COPY instead of ADD at Dockerfile. Rebuilt and pushed as simpleapp2.

$ cat /Dockerfile
FROM python:3
COPY ./simple.py /
ENTRYPOINT [ "python", "/simple.py" ]

And magically, it works and I am able to finish the rest of exercises.

$ kubectl create deployment test3 --image=$repo/simpleapp2
deployment.apps/test3 created
$ kubectl get pods -o wide
NAME                        READY   STATUS    RESTARTS      AGE     IP                NODE      NOMINATED NODE   READINESS GATES
basicpod                    1/1     Running   0             23h     192.168.235.161   worker1   <none>           <none>
nginx-8686455c8b-tlv29      1/1     Running   1 (23h ago)   25h     192.168.235.159   worker1   <none>           <none>
registry-7c4c89bb5c-dwhws   1/1     Running   1 (23h ago)   25h     192.168.235.158   worker1   <none>           <none>
test2                       1/1     Running   0             6m36s   192.168.235.178   worker1   <none>           <none>
test3-5774c58f85-n6l7x      1/1     Running   0             3s      192.168.235.180   worker1   <none>           <none>

I am on GCE and Ubuntu 20.04, not sure if it's related, but it's good to tell.

Go luck and have fun!

Categories

Upcoming Training