How do I get a single pod name for kuberenetes?

7/31/2018

I'm looking for a command like "gcloud config get-value project" that retrieves a project's name, but for a pod (it can retrieve any pod name that is running). I know you can get multiple pods with "kubectl get pods", but I would just like one pod name as the result.

I'm having to do this all the time:

kubectl get pods       # add one of the pod names in next line
kubectl logs -f some-pod-frontend-3931629792-g589c some-app 

I'm thinking along the lines of "gcloud config get-value pod". Is there a command to do that correctly?

-- sjsc
google-kubernetes-engine
kubernetes

2 Answers

7/31/2018

There are many ways, a quick search you can find many solutions:

kubectl get pods -o name --no-headers=true

kubectl get pods -o=name --all-namespaces | grep kube-proxy

kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'

please take a look to these links:

kubernetes list all running pods name

Kubernetes list all container id

https://kubernetes.io/docs/tasks/access-application-cluster/list-all-running-container-images/

-- Diego Mendes
Source: StackOverflow

7/31/2018

You can use the grep command to filter any output on stdout. So to get pods matching a specified pattern you can use a command like this:

> kubectl get pods --all-namespaces|grep grafana

Output:

monitoring      kube-prometheus-grafana-57d5b4d79f-smkz6               2/2       Running   0          1h

To only output the pod name, you can use the awk command with a parameter of '{print $2}', which displays the second column of the previous output:

kubectl get pods --all-namespaces|grep grafana|awk '{print $2}'

To only display one line you can use the head command like so:

kubectl get pods --all-namespaces|grep grafana|awk '{print $2}'|head -n 1
-- Markus Dresch
Source: StackOverflow