'How do i programatically determine whether a pod is in crashloopbackoff

Is there a way to determine programatically if a pod is in crashloopbackoff? I tried the following

pods,err :=  client.CoreV1().Pods(namespace).List(context.TODO(), metav1.ListOptions{})
if err != nil { 
    return err
}
for _, item := range pods.Items {
   log.Printf("found pod %v with state %v  reason %v and phase %v that started at %v",
                item.Name, item.Status.Message, item.Status.Reason, item.Status.Phase, item.CreationTimestamp.Time)
}

However this just prints blank for state and reason, tough it prints the phase.



Solution 1:[1]

To clarify I am posting a community wiki answer.

It's hiding in ContainerStateWaiting.Reason:

kubectl get po -o jsonpath='{.items[*].status.containerStatuses[*].state.waiting.reason}'

although be aware that it only intermittently shows up there, since it is an intermittent state of the container; perhaps a more programmatic approach is to examine the restartCount and the Error state

See also this repository.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1