Read Logs for a Kubernetes Pod

Here's how to read the logs for a kubernetes (k8s) pod.

Orient your read

First, we want to orient to where we're reading from. We'll need to know context and application name. A k8s "context" is a set of access parameters, including k8s cluster, user and namespace. The "application name" is a common label that we'd put on a pod as an identifier.

To get available contexts, run:

kubectl config get-contexts

To know the current context, run:

kubectl config current-context

If you're running k8s locally, you likely running minikube and are in that context.

To see the application names of your pods, list the pods:

kubectl get pods

Reading kubernetes Logs

Once you know what to ask for, read the logs with:

kubectl --context  logs -lapp.kubernetes.io/name= --all-containers=true --prefix --tail=1 --follow

-l is to pass that label parameter -- in this case, the application name. This is not the instance name, which has the unique hash suffix, thankfully. That makes this much easier to script.

--all-containers - will match on any pod with the given name.

--prefix shows the instance identifier prepended to each log line.

--tail=-1 will show the full log, from beginning to end.

--follow - will give you a live process that will update as the log is appended.

For example:

kubectl --context minikube logs -lapp.kubernetes.io/name=web --all-containers=true --prefix --tail=1 --follow