From 8e872978e84a889ce2ab0283ff2f8fefd9d4a714 Mon Sep 17 00:00:00 2001 From: Filipe Xavier Date: Tue, 7 Jan 2025 09:20:36 -0300 Subject: [PATCH] kubelet: improve allocated resources checkpointing changed calls to set allocation from container level to pod level on status manager. --- pkg/kubelet/kubelet.go | 2 +- pkg/kubelet/status/status_manager.go | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index b8bbfece860..096d39b88c1 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -2922,7 +2922,7 @@ func (kl *Kubelet) handlePodResourcesResize(pod *v1.Pod, podStatus *kubecontaine if fit { // Update pod resource allocation checkpoint if err := kl.statusManager.SetPodAllocation(pod); err != nil { - return nil, err + klog.ErrorS(err, "SetPodAllocation failed", "pod", klog.KObj(pod)) } for i, container := range pod.Spec.Containers { if !apiequality.Semantic.DeepEqual(container.Resources, allocatedPod.Spec.Containers[i].Resources) { diff --git a/pkg/kubelet/status/status_manager.go b/pkg/kubelet/status/status_manager.go index 3da131d5392..0156efa2cbf 100644 --- a/pkg/kubelet/status/status_manager.go +++ b/pkg/kubelet/status/status_manager.go @@ -296,13 +296,17 @@ func (m *manager) GetPodResizeStatus(podUID types.UID) v1.PodResizeStatus { func (m *manager) SetPodAllocation(pod *v1.Pod) error { m.podStatusesLock.RLock() defer m.podStatusesLock.RUnlock() + + podUID := string(pod.UID) + podAlloc := state.PodResourceAllocation{} + podAlloc[podUID] = make(map[string]v1.ResourceRequirements) + for _, container := range pod.Spec.Containers { alloc := *container.Resources.DeepCopy() - if err := m.state.SetContainerResourceAllocation(string(pod.UID), container.Name, alloc); err != nil { - return err - } + podAlloc[podUID][container.Name] = alloc } - return nil + + return m.state.SetPodResourceAllocation(podUID, podAlloc) } // SetPodResizeStatus checkpoints the last resizing decision for the pod.