diff --git a/pkg/kubelet/kubelet_pods.go b/pkg/kubelet/kubelet_pods.go index 4c89639f4fe..0e9ea8682b7 100644 --- a/pkg/kubelet/kubelet_pods.go +++ b/pkg/kubelet/kubelet_pods.go @@ -1354,6 +1354,7 @@ func (kl *Kubelet) generateAPIPodStatus(pod *v1.Pod, podStatus *kubecontainer.Po kl.probeManager.UpdatePodStatus(pod.UID, s) s.Conditions = append(s.Conditions, status.GeneratePodInitializedCondition(spec, s.InitContainerStatuses, s.Phase)) s.Conditions = append(s.Conditions, status.GeneratePodReadyCondition(spec, s.Conditions, s.ContainerStatuses, s.Phase)) + s.Conditions = append(s.Conditions, status.GenerateContainersReadyCondition(spec, s.ContainerStatuses, s.Phase)) // Status manager will take care of the LastTransitionTimestamp, either preserve // the timestamp from apiserver, or set a new one. When kubelet sees the pod, // `PodScheduled` condition must be true. diff --git a/pkg/kubelet/status/status_manager.go b/pkg/kubelet/status/status_manager.go index 74f458716e8..1dbfc6aa5e7 100644 --- a/pkg/kubelet/status/status_manager.go +++ b/pkg/kubelet/status/status_manager.go @@ -226,21 +226,24 @@ func (m *manager) SetContainerReadiness(podUID types.UID, containerID kubecontai containerStatus, _, _ = findContainerStatus(&status, containerID.String()) containerStatus.Ready = ready - // Update pod condition. - podReadyConditionIndex := -1 - for i, condition := range status.Conditions { - if condition.Type == v1.PodReady { - podReadyConditionIndex = i - break + // updateConditionFunc updates the corresponding type of condition + updateConditionFunc := func(conditionType v1.PodConditionType, condition v1.PodCondition) { + conditionIndex := -1 + for i, condition := range status.Conditions { + if condition.Type == conditionType { + conditionIndex = i + break + } + } + if conditionIndex != -1 { + status.Conditions[conditionIndex] = condition + } else { + glog.Warningf("PodStatus missing %s type condition: %+v", conditionType, status) + status.Conditions = append(status.Conditions, condition) } } - podReady := GeneratePodReadyCondition(&pod.Spec, status.Conditions, status.ContainerStatuses, status.Phase) - if podReadyConditionIndex != -1 { - status.Conditions[podReadyConditionIndex] = podReady - } else { - glog.Warningf("PodStatus missing PodReady condition: %+v", status) - status.Conditions = append(status.Conditions, podReady) - } + updateConditionFunc(v1.PodReady, GeneratePodReadyCondition(&pod.Spec, status.Conditions, status.ContainerStatuses, status.Phase)) + updateConditionFunc(v1.ContainersReady, GenerateContainersReadyCondition(&pod.Spec, status.ContainerStatuses, status.Phase)) m.updateStatusInternal(pod, status, false) }