container does not start with status CrashLoopBackOff

10/17/2018

I am trying to run a simple ubuntu container in a kubernetes cluster. It keeps on failing with CrashLoopBackOff status. I am not even able to see any logs as in to find the reason for it.

my yaml file looks like following:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ubuntu
  labels:
     app: jubuntu
spec:
    selector:
      matchLabels:
        app: jubuntu
    template:
      metadata:
         labels:
            app: jubuntu
      spec:
         containers:
            - name: ubuntu
              image: ubuntu
-- Amit Joshi
containers
kubernetes

1 Answer

10/17/2018

That's because you're using a Deployment that assumes you have a long-running task. In your case, it starts the container and immediately exits since there's nothing to be done there. In other words, this deployment doesn't make a lot of sense. You could add the following in the containers: field to see it running (still useless, but at least you don't see it crashing anymore):

command:
- sh
- '-c'
- "while true; do echo working ; sleep 5; done;"

See also this troubleshooting guide.

For your convenience, if you don't want to do it via editing a YAML manifest, you can also use this command:

$ kubectl run --image=ubuntu -- sh while true; do echo working ; sleep 5; done;

And if you're super curious and want to check if it's the same, then you can append the following to the run command: --dry-run --output=yaml (after --image, before -- sh).

-- Michael Hausenblas
Source: StackOverflow