diff --git a/pkg/kubelet/kubelet_getters.go b/pkg/kubelet/kubelet_getters.go index 1b98f9189fb..d433ffcf069 100644 --- a/pkg/kubelet/kubelet_getters.go +++ b/pkg/kubelet/kubelet_getters.go @@ -142,7 +142,15 @@ func (kl *Kubelet) getPodContainerDir(podUID types.UID, ctrName string) string { // GetPods returns all pods bound to the kubelet and their spec, and the mirror // pods. func (kl *Kubelet) GetPods() []*v1.Pod { - return kl.podManager.GetPods() + pods := kl.podManager.GetPods() + // a kubelet running without apiserver requires an additional + // update of the static pod status. See #57106 + for _, p := range pods { + if status, ok := kl.statusManager.GetPodStatus(p.UID); ok { + p.Status = status + } + } + return pods } // GetRunningPods returns all pods running on kubelet from looking at the diff --git a/pkg/kubelet/kubelet_pods.go b/pkg/kubelet/kubelet_pods.go index 506109ede07..54a6eeff36f 100644 --- a/pkg/kubelet/kubelet_pods.go +++ b/pkg/kubelet/kubelet_pods.go @@ -1382,18 +1382,15 @@ func (kl *Kubelet) generateAPIPodStatus(pod *v1.Pod, podStatus *kubecontainer.Po Status: v1.ConditionTrue, }) - if kl.kubeClient != nil { - hostIP, err := kl.getHostIPAnyWay() - if err != nil { - glog.V(4).Infof("Cannot get host IP: %v", err) - } else { - s.HostIP = hostIP.String() - if kubecontainer.IsHostNetworkPod(pod) && s.PodIP == "" { - s.PodIP = hostIP.String() - } - } + hostIP, err := kl.getHostIPAnyWay() + if err != nil { + glog.V(4).Infof("Cannot get host IP: %v", err) + return *s + } + s.HostIP = hostIP.String() + if kubecontainer.IsHostNetworkPod(pod) && s.PodIP == "" { + s.PodIP = hostIP.String() } - return *s }