When a pod in error state (crashloopbackoff), kubernetes would restart the pod. If you try to exec into the pod to check the log or debug, the following error message appears:
unable to upgrade connection: container not found ("")
Because the old pod has been killed and you cannot exec into it anymore. So how can we prevent the pod from endless restart?
Just add a command to the deployment yaml to override the default
command by the container image. Make the pod never finished by
sleep infinity or
tail -f /dev/null:
command: ["sleep"] args: ["infinity"]
command: ["tail"] args: ["-f", "/dev/null"]
Add them to
spec.template.spec.containers like this:
... spec: template: spec: containers: - name: xxx command: ["sleep"] args: ["infinity"] ...
Remove the liveness/readiness section from the yaml to make the deployment status green if necessary.
You can exec into the pod to debug as you want.