Home > front end >  How to get the list of pods with container name for pods that have restarted
How to get the list of pods with container name for pods that have restarted

Time:04-09

Using this command, I am able to get the container name that have restarted.

kubectl get pods -o jsonpath='{.items[*].status.containerStatuses[?(@.restartCount>0)].name}'

Is there a way to get the pod name as well in the same command?

CodePudding user response:

I've not tried this.

If (!) it works, it's not quite what you want as it should give you every Pod name and then a list of Container names that match the predicate.

I think you can't use kubectl --output=jsonpath alone to filter only the Pod names that have a Container with restarts.

FILTER='
{range .items[*]}
  {.metadata.name}
  {"\t"}
  [
    {.status.containerStatuses[?(@.restartCount>0)].name}
  ]
  {"\n"}
{end}
'

kubectl get pods \
--output=jsonpath="${FILTER}"

CodePudding user response:

It's much easier to get json with kubectl and then process it with jq :

#!/usr/bin/env bash

kubectl get pods -o=json |
    jq -r '.items[] |
        "\(.metadata.name) \(.status.containerStatuses[]|select(.restartCount>0).name)"'
  • Related