diff --git a/pkg/kubelet/kubelet_pods.go b/pkg/kubelet/kubelet_pods.go index 19f1509f242..fa00196a493 100644 --- a/pkg/kubelet/kubelet_pods.go +++ b/pkg/kubelet/kubelet_pods.go @@ -1616,18 +1616,17 @@ func (kl *Kubelet) convertToAPIContainerStatuses(pod *v1.Pod, podStatus *kubecon statuses[container.Name] = status } + // Sort the container statuses since clients of this interface expect the list + // of containers in a pod has a deterministic order. + if isInitContainer { + return kubetypes.SortStatusesOfInitContainers(pod, statuses) + } var containerStatuses []v1.ContainerStatus for _, status := range statuses { containerStatuses = append(containerStatuses, *status) } - // Sort the container statuses since clients of this interface expect the list - // of containers in a pod has a deterministic order. - if isInitContainer { - kubetypes.SortInitContainerStatuses(pod, containerStatuses) - } else { - sort.Sort(kubetypes.SortedContainerStatuses(containerStatuses)) - } + sort.Sort(kubetypes.SortedContainerStatuses(containerStatuses)) return containerStatuses } diff --git a/pkg/kubelet/types/types.go b/pkg/kubelet/types/types.go index a840e7de84e..b20d289a4b6 100644 --- a/pkg/kubelet/types/types.go +++ b/pkg/kubelet/types/types.go @@ -87,6 +87,17 @@ func SortInitContainerStatuses(p *v1.Pod, statuses []v1.ContainerStatus) { } } +func SortStatusesOfInitContainers(p *v1.Pod, statusMap map[string]*v1.ContainerStatus) []v1.ContainerStatus { + containers := p.Spec.InitContainers + statuses := []v1.ContainerStatus{} + for _, container := range containers { + if status, found := statusMap[container.Name]; found { + statuses = append(statuses, *status) + } + } + return statuses +} + // Reservation represents reserved resources for non-pod components. type Reservation struct { // System represents resources reserved for non-kubernetes components.