From 1ec1ef3d0650b4eb29c4c787224a22ef0d442099 Mon Sep 17 00:00:00 2001 From: Hironori Shiina Date: Tue, 25 Jun 2024 19:33:24 +0200 Subject: [PATCH] kubelet: Fix order of resizing pod cgroups in doPodResizeAction() --- pkg/kubelet/kuberuntime/kuberuntime_manager.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkg/kubelet/kuberuntime/kuberuntime_manager.go b/pkg/kubelet/kuberuntime/kuberuntime_manager.go index 2c7a8af44f4..b951e21c33b 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_manager.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_manager.go @@ -696,6 +696,7 @@ func (m *kubeGenericRuntimeManager) doPodResizeAction(pod *v1.Pod, podStatus *ku // If an error occurs at any point, abort. Let future syncpod iterations retry the unfinished stuff. resizeContainers := func(rName v1.ResourceName, currPodCgLimValue, newPodCgLimValue, currPodCgReqValue, newPodCgReqValue int64) error { var err error + // At upsizing, limits should expand prior to requests in order to keep "requests <= limits". if newPodCgLimValue > currPodCgLimValue { if err = setPodCgroupConfig(rName, true); err != nil { return err @@ -712,14 +713,17 @@ func (m *kubeGenericRuntimeManager) doPodResizeAction(pod *v1.Pod, podStatus *ku return err } } - if newPodCgLimValue < currPodCgLimValue { - err = setPodCgroupConfig(rName, true) - } + // At downsizing, requests should shrink prior to limits in order to keep "requests <= limits". if newPodCgReqValue < currPodCgReqValue { if err = setPodCgroupConfig(rName, false); err != nil { return err } } + if newPodCgLimValue < currPodCgLimValue { + if err = setPodCgroupConfig(rName, true); err != nil { + return err + } + } return err } if len(podContainerChanges.ContainersToUpdate[v1.ResourceMemory]) > 0 || podContainerChanges.UpdatePodResources {