From e1fdaa177f60e280669aef94074a21efd0d928ea Mon Sep 17 00:00:00 2001 From: Pengfei Ni Date: Mon, 3 Sep 2018 15:15:28 +0800 Subject: [PATCH] Kubelet: only apply default hard evictions of nodefs.inodesFree on Linux --- pkg/kubelet/apis/config/fuzzer/fuzzer.go | 7 +---- pkg/kubelet/apis/config/v1beta1/BUILD | 2 ++ pkg/kubelet/apis/config/v1beta1/defaults.go | 7 +---- .../apis/config/v1beta1/defaults_linux.go | 27 +++++++++++++++++++ .../apis/config/v1beta1/defaults_others.go | 26 ++++++++++++++++++ 5 files changed, 57 insertions(+), 12 deletions(-) create mode 100644 pkg/kubelet/apis/config/v1beta1/defaults_linux.go create mode 100644 pkg/kubelet/apis/config/v1beta1/defaults_others.go diff --git a/pkg/kubelet/apis/config/fuzzer/fuzzer.go b/pkg/kubelet/apis/config/fuzzer/fuzzer.go index a230185bf25..1154789c420 100644 --- a/pkg/kubelet/apis/config/fuzzer/fuzzer.go +++ b/pkg/kubelet/apis/config/fuzzer/fuzzer.go @@ -81,12 +81,7 @@ func Funcs(codecs runtimeserializer.CodecFactory) []interface{} { obj.KubeAPIQPS = 5 obj.KubeAPIBurst = 10 obj.HairpinMode = v1beta1.PromiscuousBridge - obj.EvictionHard = map[string]string{ - "memory.available": "100Mi", - "nodefs.available": "10%", - "nodefs.inodesFree": "5%", - "imagefs.available": "15%", - } + obj.EvictionHard = kubeletconfigv1beta1.DefaultEvictionHard obj.EvictionPressureTransitionPeriod = metav1.Duration{Duration: 5 * time.Minute} obj.MakeIPTablesUtilChains = true obj.IPTablesMasqueradeBit = kubeletconfigv1beta1.DefaultIPTablesMasqueradeBit diff --git a/pkg/kubelet/apis/config/v1beta1/BUILD b/pkg/kubelet/apis/config/v1beta1/BUILD index 74fb33a9450..8ac93dc4d6f 100644 --- a/pkg/kubelet/apis/config/v1beta1/BUILD +++ b/pkg/kubelet/apis/config/v1beta1/BUILD @@ -9,6 +9,8 @@ go_library( name = "go_default_library", srcs = [ "defaults.go", + "defaults_linux.go", + "defaults_others.go", "doc.go", "register.go", "zz_generated.conversion.go", diff --git a/pkg/kubelet/apis/config/v1beta1/defaults.go b/pkg/kubelet/apis/config/v1beta1/defaults.go index b6103d3db57..ca23a0b492c 100644 --- a/pkg/kubelet/apis/config/v1beta1/defaults.go +++ b/pkg/kubelet/apis/config/v1beta1/defaults.go @@ -178,12 +178,7 @@ func SetDefaults_KubeletConfiguration(obj *kubeletconfigv1beta1.KubeletConfigura obj.SerializeImagePulls = utilpointer.BoolPtr(true) } if obj.EvictionHard == nil { - obj.EvictionHard = map[string]string{ - "memory.available": "100Mi", - "nodefs.available": "10%", - "nodefs.inodesFree": "5%", - "imagefs.available": "15%", - } + obj.EvictionHard = DefaultEvictionHard } if obj.EvictionPressureTransitionPeriod == zeroDuration { obj.EvictionPressureTransitionPeriod = metav1.Duration{Duration: 5 * time.Minute} diff --git a/pkg/kubelet/apis/config/v1beta1/defaults_linux.go b/pkg/kubelet/apis/config/v1beta1/defaults_linux.go new file mode 100644 index 00000000000..7e1060a03e4 --- /dev/null +++ b/pkg/kubelet/apis/config/v1beta1/defaults_linux.go @@ -0,0 +1,27 @@ +// +build linux + +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// DefaultEvictionHard includes default options for hard eviction. +var DefaultEvictionHard = map[string]string{ + "memory.available": "100Mi", + "nodefs.available": "10%", + "nodefs.inodesFree": "5%", + "imagefs.available": "15%", +} diff --git a/pkg/kubelet/apis/config/v1beta1/defaults_others.go b/pkg/kubelet/apis/config/v1beta1/defaults_others.go new file mode 100644 index 00000000000..74464a3c840 --- /dev/null +++ b/pkg/kubelet/apis/config/v1beta1/defaults_others.go @@ -0,0 +1,26 @@ +// +build !linux + +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// DefaultEvictionHard includes default options for hard eviction. +var DefaultEvictionHard = map[string]string{ + "memory.available": "100Mi", + "nodefs.available": "10%", + "imagefs.available": "15%", +}