fix: normalize ephemeral container statuses

This commit is contained in:
zhifei92 2024-05-16 14:02:58 +08:00
parent 9125473eec
commit df87982950

View File

@ -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
}