diff --git a/runtime/kubernetes/kubernetes.go b/runtime/kubernetes/kubernetes.go index 6f23ba71..16240189 100644 --- a/runtime/kubernetes/kubernetes.go +++ b/runtime/kubernetes/kubernetes.go @@ -117,19 +117,22 @@ func (k *kubernetes) getService(labels map[string]string) ([]*service, error) { } // get the status from the pods - status := "unknown" - if len(podList.Items) > 0 { - switch podList.Items[0].Status.Conditions[0].Type { - case "PodScheduled": - status = "starting" - case "Initialized": - status = "starting" - case "Ready": - status = "ready" - case "ContainersReady": - status = "ready" + var status string + + for _, item := range podList.Items { + switch item.Status.Phase { + case "Failed": + status = item.Status.Reason + default: + status = item.Status.Phase } } + + // unknown status + if len(status) == 0 { + status = "n/a" + } + if logger.V(logger.DebugLevel, logger.DefaultLogger) { logger.Debugf("Runtime setting %s service deployment status: %v", name, status) } diff --git a/util/kubernetes/client/types.go b/util/kubernetes/client/types.go index b82a80df..a747ad2a 100644 --- a/util/kubernetes/client/types.go +++ b/util/kubernetes/client/types.go @@ -103,9 +103,10 @@ type Pod struct { // PodStatus type PodStatus struct { + Conditions []PodCondition `json:"conditions,omitempty"` PodIP string `json:"podIP"` Phase string `json:"phase"` - Conditions []PodCondition `json:"conditions,omitempty"` + Reason string `json:"reason"` } // PodCondition describes the state of pod