Ali SAID OMAR
Ali SAID OMAR

Reputation: 6792

kubernetes list all running pods name

I looking for the option to list all pods name

How to do without awk (or cut). Now i'm using this command

kubectl get --no-headers=true pods -o name | awk -F "/" '{print $2}'

Upvotes: 170

Views: 203805

Answers (14)

DimiDak
DimiDak

Reputation: 5581

kubectl get pods --no-headers -o name

Upvotes: 1

Kasthuri Shravankumar
Kasthuri Shravankumar

Reputation: 679

kubectl exec -it $(kubectl get pods | grep mess | awk '{print $1}') /bin/bash


hostname -i

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

kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" |tr -s '[[:space:]]' '\n' |sort |uniq  | grep mess

kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |\

sort

feca4d9f-02db-4edf-88a2-6e9d169a92a9

You can get all the values of a ConfigMap in one line by using the kubectl get command with the -o go-template option to iterate over the values and print them on separate lines. Here's an example:

kubectl get configmap MY_CONFIG_MAP -o go-template='{{range $k,$v := .data}}{{$k}}={{$v}}{{"\n"}}{{end}}'

kubectl get configmap MY_CONFIG_MAP -o jsonpath='{.data}'

Upvotes: -2

nzrytmn
nzrytmn

Reputation: 6911

I am using like below :

kubectl get pods -l service=usercontent

It brings all pods that related this service.

Upvotes: 0

ponsfrilus
ponsfrilus

Reputation: 1339

Here is another way to do it:

kubectl get pods -o=name --field-selector=status.phase=Running

The --field-selector=status.phase=Running is needed as the question mention all the running pod names. If the all in the question is for all the namespaces, just add the --all-namespaces option.

Note that this command is very convenient when one want a quick way to access something from the running pod(s), such as logs :

kubectl logs -f $(kubectl get pods -o=name --field-selector=status.phase=Running)

Upvotes: 17

Vikash Pandey
Vikash Pandey

Reputation: 5443

Well, In our case we have kept pods inside different namespace, here to identify the specific pod or list of pods we ran following command-

Approach 1:

  1. To get the list of namespaces kubectl get ns -A

  2. To get all the pods inside one namespaces kubectl get pods -n <namespace>

Approach 2:

Use this command-

kubectl get pods --all-namespaces

Upvotes: 0

Dupinder Singh
Dupinder Singh

Reputation: 7759

If you want to extract specific container's pod name then A simple command can do all the hard work

kubectl get pods --template '{{range .items}}{{.metadata.name}}{{end}}' --selector=app=<CONTAINER-NAME>

Just replace <CONTAINER-NAME> with your service container-name

Upvotes: 5

Zstack
Zstack

Reputation: 4733

Get all running pods in the namespace

kubectl get pods --field-selector=status.phase=Running --no-headers -o custom-columns=":metadata.name" 

From viewing, finding resources.

You could also specify namespace with -n <namespace name>.

Upvotes: 10

Radu Gabriel
Radu Gabriel

Reputation: 3201

There is also this solution:

kubectl get pods -o jsonpath={..metadata.name}

Upvotes: 18

Robert Bailey
Robert Bailey

Reputation: 18200

You can use the go templating option built into kubectl to format the output to just show the names for each pod:

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

Upvotes: 128

juancho85
juancho85

Reputation: 3099

Personally I prefer this method because it relies only on kubectl, is not very verbose and we don't get the pod/ prefix in the output:

kubectl get pods --no-headers -o custom-columns=":metadata.name"

Upvotes: 282

krozaine
krozaine

Reputation: 1531

Get Names of pods using -o=name Refer this cheatsheet for more.

kubectl get pods -o=name

Example output:

pod/kube-xyz-53kg5
pod/kube-xyz-jh7d2
pod/kube-xyz-subt9

To remove trailing pod/ you can use standard bash sed command

kubectl get pods -o=name | sed "s/^.\{4\}//"

Example output:

kube-xyz-53kg5
kube-pqr-jh7d2
kube-abc-s2bt9

To get podname with particular string, standard linux grep command

kubectl get pods -o=name | grep kube-pqr | sed "s/^.\{4\}//"

Example output:

kube-pqr-jh7d2

With this name, you can do things, like adding alias to get shell to running container:

alias bashkubepqr='kubectl exec -it $(kubectl get pods -o=name | grep kube-pqr | sed "s/^.\{4\}//") bash'

Upvotes: 76

Amadey
Amadey

Reputation: 461

You can use -o=name to display only pod names. For example to list proxy pods you can use:

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

The result is:

pod/kube-proxy-95rlj
pod/kube-proxy-bm77b
pod/kube-proxy-clc25

Upvotes: 22

Vincent De Smet
Vincent De Smet

Reputation: 4979

jsonpath alternative

kubectl get po -o jsonpath="{range .items[*]}{@.metadata.name}{end}" -l app=nginx-ingress,component=controller

see also: more examples of kubectl output options

Upvotes: 4

ADavid
ADavid

Reputation: 621

You can use custom-columns in output option to get the name and --no-headers option

kubectl get --no-headers=true pods -l app=external-dns -o custom-columns=:metadata.name

Upvotes: 52

Related Questions