@@ -21,6 +21,7 @@ import (
21
21
"os"
22
22
"path/filepath"
23
23
24
+ "k8s.io/kubernetes/pkg/features"
24
25
"k8s.io/kubernetes/pkg/kubelet/util/swap"
25
26
26
27
"k8s.io/klog/v2"
@@ -32,8 +33,8 @@ import (
32
33
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
33
34
"k8s.io/apimachinery/pkg/types"
34
35
utilfeature "k8s.io/apiserver/pkg/util/feature"
36
+ resourcehelper "k8s.io/component-helpers/resource"
35
37
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
36
- "k8s.io/kubernetes/pkg/features"
37
38
"k8s.io/kubernetes/pkg/kubelet/cm"
38
39
usernamespacefeature "k8s.io/kubernetes/pkg/kubelet/userns"
39
40
"k8s.io/kubernetes/pkg/volume"
@@ -83,7 +84,7 @@ func (plugin *emptyDirPlugin) GetPluginName() string {
83
84
func (plugin * emptyDirPlugin ) GetVolumeName (spec * volume.Spec ) (string , error ) {
84
85
volumeSource , _ := getVolumeSource (spec )
85
86
if volumeSource == nil {
86
- return "" , fmt .Errorf ("Spec does not reference an EmptyDir volume type" )
87
+ return "" , fmt .Errorf ("spec does not reference an emptyDir volume type" )
87
88
}
88
89
89
90
// Return user defined volume name, since this is an ephemeral volume type
@@ -405,10 +406,19 @@ func getPageSizeMountOption(medium v1.StorageMedium, pod *v1.Pod) (string, error
405
406
}
406
407
}
407
408
409
+ podLevelAndContainerLevelRequests := []v1.ResourceList {}
410
+ if utilfeature .DefaultFeatureGate .Enabled (features .PodLevelResources ) && resourcehelper .IsPodLevelResourcesSet (pod ) {
411
+ podLevelAndContainerLevelRequests = append (podLevelAndContainerLevelRequests , pod .Spec .Resources .Requests )
412
+ }
413
+
408
414
// In some rare cases init containers can also consume Huge pages
409
415
for _ , container := range append (pod .Spec .Containers , pod .Spec .InitContainers ... ) {
410
- // We can take request because limit and requests must match.
411
- for requestName := range container .Resources .Requests {
416
+ podLevelAndContainerLevelRequests = append (podLevelAndContainerLevelRequests , container .Resources .Requests )
417
+ }
418
+
419
+ // We can take request because limit and requests must match.
420
+ for _ , resourceList := range podLevelAndContainerLevelRequests {
421
+ for requestName := range resourceList {
412
422
if ! v1helper .IsHugePageResourceName (requestName ) {
413
423
continue
414
424
}
@@ -438,7 +448,6 @@ func getPageSizeMountOption(medium v1.StorageMedium, pod *v1.Pod) (string, error
438
448
}
439
449
440
450
return fmt .Sprintf ("%s=%s" , hugePagesPageSizeMountOption , pageSize .String ()), nil
441
-
442
451
}
443
452
444
453
// setupDir creates the directory with the default permissions specified by the perm constant.
0 commit comments