From df879829505f99e9082e0341516c3bcdb46cbd8f Mon Sep 17 00:00:00 2001 From: zhifei92 Date: Thu, 16 May 2024 14:02:58 +0800 Subject: [PATCH] fix: normalize ephemeral container statuses --- pkg/kubelet/status/status_manager.go | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/pkg/kubelet/status/status_manager.go b/pkg/kubelet/status/status_manager.go index 5b6e7ea5a7a..c7cb740586e 100644 --- a/pkg/kubelet/status/status_manager.go +++ b/pkg/kubelet/status/status_manager.go @@ -993,7 +993,7 @@ func (m *manager) needsReconcile(uid types.UID, status v1.PodStatus) bool { // Related issue #15262/PR #15263 to move apiserver to RFC339NANO is closed. func normalizeStatus(pod *v1.Pod, status *v1.PodStatus) *v1.PodStatus { bytesPerStatus := kubecontainer.MaxPodTerminationMessageLogLength - if containers := len(pod.Spec.Containers) + len(pod.Spec.InitContainers); containers > 0 { + if containers := len(pod.Spec.Containers) + len(pod.Spec.InitContainers) + len(pod.Spec.EphemeralContainers); containers > 0 { bytesPerStatus = bytesPerStatus / containers } normalizeTimeStamp := func(t *metav1.Time) { @@ -1021,23 +1021,23 @@ func normalizeStatus(pod *v1.Pod, status *v1.PodStatus) *v1.PodStatus { normalizeTimeStamp(&condition.LastTransitionTime) } - // update container statuses - for i := range status.ContainerStatuses { - cstatus := &status.ContainerStatuses[i] - normalizeContainerState(&cstatus.State) - normalizeContainerState(&cstatus.LastTerminationState) + normalizeContainerStatuses := func(containerStatuses []v1.ContainerStatus) { + for i := range containerStatuses { + cstatus := &containerStatuses[i] + normalizeContainerState(&cstatus.State) + normalizeContainerState(&cstatus.LastTerminationState) + } } - // Sort the container statuses, so that the order won't affect the result of comparison + + normalizeContainerStatuses(status.ContainerStatuses) sort.Sort(kubetypes.SortedContainerStatuses(status.ContainerStatuses)) - // update init container statuses - for i := range status.InitContainerStatuses { - cstatus := &status.InitContainerStatuses[i] - normalizeContainerState(&cstatus.State) - normalizeContainerState(&cstatus.LastTerminationState) - } - // Sort the container statuses, so that the order won't affect the result of comparison + normalizeContainerStatuses(status.InitContainerStatuses) kubetypes.SortInitContainerStatuses(pod, status.InitContainerStatuses) + + normalizeContainerStatuses(status.EphemeralContainerStatuses) + sort.Sort(kubetypes.SortedContainerStatuses(status.EphemeralContainerStatuses)) + return status }