...
1
2
3
4
19
20 package kuberuntime
21
22 import (
23 v1 "k8s.io/api/core/v1"
24 "k8s.io/apimachinery/pkg/api/resource"
25 runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1"
26
27 resourcehelper "k8s.io/kubernetes/pkg/api/v1/resource"
28 )
29
30 func (m *kubeGenericRuntimeManager) convertOverheadToLinuxResources(pod *v1.Pod) *runtimeapi.LinuxContainerResources {
31 resources := &runtimeapi.LinuxContainerResources{}
32 if pod.Spec.Overhead != nil {
33 cpu := pod.Spec.Overhead.Cpu()
34 memory := pod.Spec.Overhead.Memory()
35
36
37
38 resources = m.calculateLinuxResources(cpu, cpu, memory)
39 }
40
41 return resources
42 }
43
44 func (m *kubeGenericRuntimeManager) calculateSandboxResources(pod *v1.Pod) *runtimeapi.LinuxContainerResources {
45 opts := resourcehelper.PodResourcesOptions{
46 ExcludeOverhead: true,
47 }
48 req := resourcehelper.PodRequests(pod, opts)
49 lim := resourcehelper.PodLimits(pod, opts)
50 var cpuRequest *resource.Quantity
51 if _, cpuRequestExists := req[v1.ResourceCPU]; cpuRequestExists {
52 cpuRequest = req.Cpu()
53 }
54 return m.calculateLinuxResources(cpuRequest, lim.Cpu(), lim.Memory())
55 }
56
57 func (m *kubeGenericRuntimeManager) applySandboxResources(pod *v1.Pod, config *runtimeapi.PodSandboxConfig) error {
58
59 if config.Linux == nil {
60 return nil
61 }
62 config.Linux.Resources = m.calculateSandboxResources(pod)
63 config.Linux.Overhead = m.convertOverheadToLinuxResources(pod)
64
65 return nil
66 }
67
View as plain text