Skip to content

Commit e3f4c6e

Browse files
committed
Containers with hugepage volume mounts with unset hugepage limits
1 parent aa17082 commit e3f4c6e

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

pkg/volume/emptydir/empty_dir.go

+14-5
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"os"
2222
"path/filepath"
2323

24+
"k8s.io/kubernetes/pkg/features"
2425
"k8s.io/kubernetes/pkg/kubelet/util/swap"
2526

2627
"k8s.io/klog/v2"
@@ -32,8 +33,8 @@ import (
3233
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3334
"k8s.io/apimachinery/pkg/types"
3435
utilfeature "k8s.io/apiserver/pkg/util/feature"
36+
resourcehelper "k8s.io/component-helpers/resource"
3537
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
36-
"k8s.io/kubernetes/pkg/features"
3738
"k8s.io/kubernetes/pkg/kubelet/cm"
3839
usernamespacefeature "k8s.io/kubernetes/pkg/kubelet/userns"
3940
"k8s.io/kubernetes/pkg/volume"
@@ -83,7 +84,7 @@ func (plugin *emptyDirPlugin) GetPluginName() string {
8384
func (plugin *emptyDirPlugin) GetVolumeName(spec *volume.Spec) (string, error) {
8485
volumeSource, _ := getVolumeSource(spec)
8586
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")
8788
}
8889

8990
// 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
405406
}
406407
}
407408

409+
podLevelAndContainerLevelRequests := []v1.ResourceList{}
410+
if utilfeature.DefaultFeatureGate.Enabled(features.PodLevelResources) && resourcehelper.IsPodLevelResourcesSet(pod) {
411+
podLevelAndContainerLevelRequests = append(podLevelAndContainerLevelRequests, pod.Spec.Resources.Requests)
412+
}
413+
408414
// In some rare cases init containers can also consume Huge pages
409415
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 {
412422
if !v1helper.IsHugePageResourceName(requestName) {
413423
continue
414424
}
@@ -438,7 +448,6 @@ func getPageSizeMountOption(medium v1.StorageMedium, pod *v1.Pod) (string, error
438448
}
439449

440450
return fmt.Sprintf("%s=%s", hugePagesPageSizeMountOption, pageSize.String()), nil
441-
442451
}
443452

444453
// setupDir creates the directory with the default permissions specified by the perm constant.

0 commit comments

Comments
 (0)