Troubleshooting Cheatsheet when Debugging Service in Kubernetes
Gain Shell Access to Pod (similar to ssh)
kubectl exec -it <pod> -- bash
This only working if the pod contains bash. Change bash to sh if bash not found.
Temporary Spawn Ubuntu Pod
Sometimes it is impossible to gain shell access to the existing running pod. The reason maybe: no shell binary in the pod or even we don't have no access to the pod.
The other way that we can try is spawning a pod temporarily then we can use this pod to debug the running service.
kubectl run -i \
--tty busybox \
--image=ubuntu \
--restart=Never \
-- bash
In that pod, you can use apt to install common utilities to debug service:
apt update -y
apt install -y dnsutils curl netcat
After finish, don't forget to delete the pod
kubectl delete pod busybox
Useful Commands
# check the dns resolution (you can try to lookup kubernetes service host as well here)
nslookup <domain>
# check whether the host:port is open
nc -zv <host> <port>
Member discussion