Consider Pod Phase in IsReadyPod (#1080)

This commit is contained in:
Bhavin Gandhi
2019-01-28 13:15:38 +08:00
committed by Ta-Ching Chen
parent 6893403ba7
commit 1806259637
2 changed files with 15 additions and 1 deletions
+14
View File
@@ -120,12 +120,26 @@ func IsReadyPod(pod *apiv1.Pod) bool {
return false
}
// pod is not in Running Phase. It can be in Pending,
// Succeeded, Failed, Unknown. In some cases the pod can be in
// different sate than Running, for example Kubernetes sets a
// pod to Termination while k8s waits for the grace period of
// the pod, even if all the containers are in Ready state.
if pod.Status.Phase != apiv1.PodRunning {
return false
}
// pod is in "Terminating" status if deletionTimestamp is not nil
// https://github.com/kubernetes/kubernetes/issues/61376
if pod.ObjectMeta.DeletionTimestamp != nil {
return false
}
// pod does not have an IP address allocated to it yet
if pod.Status.PodIP == "" {
return false
}
for _, cStatus := range pod.Status.ContainerStatuses {
if !cStatus.Ready {
return false
+1 -1
View File
@@ -305,7 +305,7 @@ func (gp *GenericPool) specializePod(pod *apiv1.Pod, metadata *metav1.ObjectMeta
// for fetcher we don't need to create a service, just talk to the pod directly
podIP := pod.Status.PodIP
if len(podIP) == 0 {
return errors.New("Pod has no IP")
return errors.Errorf("Pod %s in namespace %s has no IP", pod.ObjectMeta.Name, pod.ObjectMeta.Namespace)
}
// specialize pod with service
if gp.useIstio {