Skip to content

Commit a97c6a7

Browse files
committed
Added the mergeDefaultEvictionSettings Kubelet Config
1 parent 165da9a commit a97c6a7

File tree

12 files changed

+58
-0
lines changed

12 files changed

+58
-0
lines changed

cmd/kubelet/app/server.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,12 @@ func loadConfigFile(name string) (*kubeletconfiginternal.KubeletConfiguration, e
443443
// See: https://github.com/kubernetes/kubernetes/pull/110263
444444
if kc.EvictionHard == nil {
445445
kc.EvictionHard = eviction.DefaultEvictionHard
446+
} else if kc.MergeDefaultEvictionSettings {
447+
for k, v := range eviction.DefaultEvictionHard {
448+
if _, exists := kc.EvictionHard[k]; !exists {
449+
kc.EvictionHard[k] = v
450+
}
451+
}
446452
}
447453
return kc, err
448454
}

pkg/generated/openapi/zz_generated.openapi.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/kubelet/apis/config/fuzzer/fuzzer.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ func Funcs(codecs runtimeserializer.CodecFactory) []interface{} {
9898
obj.HairpinMode = v1beta1.PromiscuousBridge
9999
obj.EvictionHard = eviction.DefaultEvictionHard
100100
obj.EvictionPressureTransitionPeriod = metav1.Duration{Duration: 5 * time.Minute}
101+
obj.MergeDefaultEvictionSettings = false
101102
obj.MakeIPTablesUtilChains = true
102103
obj.IPTablesMasqueradeBit = kubeletconfigv1beta1.DefaultIPTablesMasqueradeBit
103104
obj.IPTablesDropBit = kubeletconfigv1beta1.DefaultIPTablesDropBit

pkg/kubelet/apis/config/helpers_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ var (
258258
"MaxPods",
259259
"MemoryManagerPolicy",
260260
"MemorySwap.SwapBehavior",
261+
"MergeDefaultEvictionSettings",
261262
"NodeLeaseDurationSeconds",
262263
"NodeStatusMaxImages",
263264
"NodeStatusUpdateFrequency.Duration",

pkg/kubelet/apis/config/scheme/testdata/KubeletConfiguration/after/v1beta1.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ maxPods: 110
7070
memoryManagerPolicy: None
7171
memorySwap: {}
7272
memoryThrottlingFactor: 0.9
73+
mergeDefaultEvictionSettings: false
7374
nodeLeaseDurationSeconds: 40
7475
nodeStatusMaxImages: 50
7576
nodeStatusReportFrequency: 5m0s

pkg/kubelet/apis/config/scheme/testdata/KubeletConfiguration/roundtrip/default/v1beta1.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ maxPods: 110
7070
memoryManagerPolicy: None
7171
memorySwap: {}
7272
memoryThrottlingFactor: 0.9
73+
mergeDefaultEvictionSettings: false
7374
nodeLeaseDurationSeconds: 40
7475
nodeStatusMaxImages: 50
7576
nodeStatusReportFrequency: 5m0s

pkg/kubelet/apis/config/types.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,14 @@ type KubeletConfiguration struct {
322322
// amount of a given resource the kubelet will reclaim when performing a pod eviction while
323323
// that resource is under pressure. For example: {"imagefs.available": "2Gi"}
324324
EvictionMinimumReclaim map[string]string
325+
// mergeDefaultEvictionSettings indicates that defaults for the evictionHard, evictionSoft, evictionSoftGracePeriod, and evictionMinimumReclaim
326+
// fields should be merged into values specified for those fields in this configuration.
327+
// Signals specified in this configuration take precedence.
328+
// Signals not specified in this configuration inherit their defaults.
329+
// If false, and if any signal is specified in this configuration then other signals that
330+
// are not specified in this configuration will be set to 0.
331+
// It applies to merging the fields for which the default exists, and currently only evictionHard has default values.
332+
MergeDefaultEvictionSettings bool
325333
// podsPerCore is the maximum number of pods per core. Cannot exceed MaxPods.
326334
// If 0, this field is ignored.
327335
PodsPerCore int32

pkg/kubelet/apis/config/v1beta1/defaults.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,9 @@ func SetDefaults_KubeletConfiguration(obj *kubeletconfigv1beta1.KubeletConfigura
236236
if obj.EvictionPressureTransitionPeriod == zeroDuration {
237237
obj.EvictionPressureTransitionPeriod = metav1.Duration{Duration: 5 * time.Minute}
238238
}
239+
if obj.MergeDefaultEvictionSettings == nil {
240+
obj.MergeDefaultEvictionSettings = ptr.To(false)
241+
}
239242
if obj.EnableControllerAttachDetach == nil {
240243
obj.EnableControllerAttachDetach = ptr.To(true)
241244
}

pkg/kubelet/apis/config/v1beta1/defaults_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
104104
MaxParallelImagePulls: nil,
105105
EvictionHard: nil,
106106
EvictionPressureTransitionPeriod: metav1.Duration{Duration: 5 * time.Minute},
107+
MergeDefaultEvictionSettings: ptr.To(false),
107108
EnableControllerAttachDetach: ptr.To(true),
108109
MakeIPTablesUtilChains: ptr.To(true),
109110
IPTablesMasqueradeBit: ptr.To[int32](DefaultIPTablesMasqueradeBit),
@@ -221,6 +222,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
221222
EvictionPressureTransitionPeriod: zeroDuration,
222223
EvictionMaxPodGracePeriod: 0,
223224
EvictionMinimumReclaim: map[string]string{},
225+
MergeDefaultEvictionSettings: ptr.To(false),
224226
PodsPerCore: 0,
225227
EnableControllerAttachDetach: ptr.To(false),
226228
ProtectKernelDefaults: false,
@@ -334,6 +336,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
334336
EvictionSoftGracePeriod: map[string]string{},
335337
EvictionPressureTransitionPeriod: metav1.Duration{Duration: 5 * time.Minute},
336338
EvictionMinimumReclaim: map[string]string{},
339+
MergeDefaultEvictionSettings: ptr.To(false),
337340
EnableControllerAttachDetach: ptr.To(false),
338341
MakeIPTablesUtilChains: ptr.To(false),
339342
IPTablesMasqueradeBit: ptr.To[int32](0),
@@ -472,6 +475,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
472475
EvictionMinimumReclaim: map[string]string{
473476
"imagefs.available": "1Gi",
474477
},
478+
MergeDefaultEvictionSettings: ptr.To(true),
475479
PodsPerCore: 1,
476480
EnableControllerAttachDetach: ptr.To(true),
477481
ProtectKernelDefaults: true,
@@ -630,6 +634,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
630634
PodsPerCore: 1,
631635
EnableControllerAttachDetach: ptr.To(true),
632636
ProtectKernelDefaults: true,
637+
MergeDefaultEvictionSettings: ptr.To(true),
633638
MakeIPTablesUtilChains: ptr.To(true),
634639
IPTablesMasqueradeBit: ptr.To[int32](1),
635640
IPTablesDropBit: ptr.To[int32](1),
@@ -748,6 +753,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
748753
MaxParallelImagePulls: nil,
749754
EvictionHard: nil,
750755
EvictionPressureTransitionPeriod: metav1.Duration{Duration: 5 * time.Minute},
756+
MergeDefaultEvictionSettings: ptr.To(false),
751757
EnableControllerAttachDetach: ptr.To(true),
752758
MakeIPTablesUtilChains: ptr.To(true),
753759
IPTablesMasqueradeBit: ptr.To[int32](DefaultIPTablesMasqueradeBit),
@@ -843,6 +849,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
843849
MaxParallelImagePulls: ptr.To[int32](5),
844850
EvictionHard: nil,
845851
EvictionPressureTransitionPeriod: metav1.Duration{Duration: 5 * time.Minute},
852+
MergeDefaultEvictionSettings: ptr.To(false),
846853
EnableControllerAttachDetach: ptr.To(true),
847854
MakeIPTablesUtilChains: ptr.To(true),
848855
IPTablesMasqueradeBit: ptr.To[int32](DefaultIPTablesMasqueradeBit),
@@ -938,6 +945,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
938945
MaxParallelImagePulls: ptr.To[int32](1),
939946
EvictionHard: nil,
940947
EvictionPressureTransitionPeriod: metav1.Duration{Duration: 5 * time.Minute},
948+
MergeDefaultEvictionSettings: ptr.To(false),
941949
EnableControllerAttachDetach: ptr.To(true),
942950
MakeIPTablesUtilChains: ptr.To(true),
943951
IPTablesMasqueradeBit: ptr.To[int32](DefaultIPTablesMasqueradeBit),
@@ -1033,6 +1041,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
10331041
MaxParallelImagePulls: nil,
10341042
EvictionHard: nil,
10351043
EvictionPressureTransitionPeriod: metav1.Duration{Duration: 5 * time.Minute},
1044+
MergeDefaultEvictionSettings: ptr.To(false),
10361045
EnableControllerAttachDetach: ptr.To(true),
10371046
MakeIPTablesUtilChains: ptr.To(true),
10381047
IPTablesMasqueradeBit: ptr.To[int32](DefaultIPTablesMasqueradeBit),

pkg/kubelet/apis/config/v1beta1/zz_generated.conversion.go

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)