diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container.go b/pkg/kubelet/kuberuntime/kuberuntime_container.go index 4851cb291b6..b57148c0213 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container.go @@ -413,10 +413,9 @@ func (m *kubeGenericRuntimeManager) updateContainerResources(pod *v1.Pod, contai } func (m *kubeGenericRuntimeManager) updatePodSandboxResources(sandboxID string, pod *v1.Pod) error { - podResourcesRequest := &runtimeapi.UpdatePodSandboxResourcesRequest{ - PodSandboxId: sandboxID, - Overhead: m.convertOverheadToLinuxResources(pod), - Resources: m.calculateSandboxResources(pod), + podResourcesRequest := m.generateUpdatePodSandboxResourcesRequest(sandboxID, pod) + if podResourcesRequest == nil { + return fmt.Errorf("sandboxID %q updatePodSandboxResources failed: cannot generate resources config", sandboxID) } ctx := context.Background() diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go b/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go index 662bb8f98f3..72fc62a2727 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go @@ -248,6 +248,15 @@ func (m *kubeGenericRuntimeManager) generateContainerResources(pod *v1.Pod, cont } } +// generateUpdatePodSandboxResourcesRequest generates platform specific (linux) podsandox resources config for runtime +func (m *kubeGenericRuntimeManager) generateUpdatePodSandboxResourcesRequest(sandboxID string, pod *v1.Pod) *runtimeapi.UpdatePodSandboxResourcesRequest { + return &runtimeapi.UpdatePodSandboxResourcesRequest{ + PodSandboxId: sandboxID, + Overhead: m.convertOverheadToLinuxResources(pod), + Resources: m.calculateSandboxResources(pod), + } +} + // calculateLinuxResources will create the linuxContainerResources type based on the provided CPU and memory resource requests, limits func (m *kubeGenericRuntimeManager) calculateLinuxResources(cpuRequest, cpuLimit, memoryLimit *resource.Quantity, disableCPUQuota bool) *runtimeapi.LinuxContainerResources { resources := runtimeapi.LinuxContainerResources{} diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go b/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go index 55465475847..81a334b933a 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go @@ -20,7 +20,7 @@ limitations under the License. package kuberuntime import ( - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" ) @@ -35,6 +35,11 @@ func (m *kubeGenericRuntimeManager) generateContainerResources(pod *v1.Pod, cont return nil } +// generateUpdatePodSandboxResourcesRequest generates platform specific podsandox resources config for runtime +func (m *kubeGenericRuntimeManager) generateUpdatePodSandboxResourcesRequest(sandboxID string, pod *v1.Pod) *runtimeapi.UpdatePodSandboxResourcesRequest { + return nil +} + func toKubeContainerResources(statusResources *runtimeapi.ContainerResources) *kubecontainer.ContainerResources { return nil } diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go b/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go index eb64c27db18..9da32365df8 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go @@ -47,6 +47,13 @@ func (m *kubeGenericRuntimeManager) generateContainerResources(pod *v1.Pod, cont } } +// generateUpdatePodSandboxResourcesRequest generates platform specific podsandox resources config for runtime +func (m *kubeGenericRuntimeManager) generateUpdatePodSandboxResourcesRequest(sandboxID string, pod *v1.Pod) *runtimeapi.UpdatePodSandboxResourcesRequest { + return &runtimeapi.UpdatePodSandboxResourcesRequest{ + PodSandboxId: sandboxID, + } +} + // generateWindowsContainerResources generates windows container resources config for runtime func (m *kubeGenericRuntimeManager) generateWindowsContainerResources(pod *v1.Pod, container *v1.Container) *runtimeapi.WindowsContainerResources { wcr := m.calculateWindowsResources(container.Resources.Limits.Cpu(), container.Resources.Limits.Memory())