Debugging k8s cluster connectivity to an outside service
To debug running pods in kubernetes you can follow official guide - https://kubernetes.io/docs/tasks/debug/debug-application/debug-running-pod/ (opens in a new tab).
Following is just a small example in our local context. Let's assume you want to check if you can ping a service from the next-city-library pod.
-
Connect to proper Kubernetes cluster
In our case, we will connect to
tkg-innov-dev. You can follow our Login guide. To verify that you are correctly connected you can runkubectl config current-contextThe output should match
tkg-innov-dev. -
Check if your service is running in a pod.
Run
kubectl get pods --all-namespacesand find your desired pod and copy its name like:
next-city-library-app-b868fcd5c-lj6tb.
If you are running a reasonable*nixshell, you can dokubectl get pods --all-namespaces | grep "next-city-library"which should help with finding your POD.
-
Create a new debug pod with ubuntu
Now we will create a new debug pod with ubuntu, and we will attach the container to the pod so we can easily debug it. Run following command to create a new debug POD, which will be a exact copy of your original container (you can read more information in the official docs)
kubectl debug next-city-library-app-b868fcd5c-lj6to -it --namespace=bratislava-monorepo --image=ubuntu --share-processes --copy-to=next-city-library-app-debugDon't forget to update the proper pod and
--copy-toto the name you want. Under--copy-to, you will find the running pod. This command will also attach you to newly created POD. -
Install needed debugging utilities for ubuntu
Before any installations run, you might need to run
sudo apt update --yesFor debugging, you will probably need some networking tools. You can install it with these commands:
- ping:
apt-get install iputils-ping - nslookup:
apt-get install dnsutils - wget:
apt install wget - curl:
apt install curl
- ping:
-
Clean Up
After you are done with debugging, please clean up after yourself and delete the pods that you have created and no longer need. For example you can delete our debug pod with following command
kubectl delete pod next-city-library-app-debug --namespace=bratislava-monorepo