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