From 1f2262e6b0f5bab90fecba4bde5ee8cc6f65d0ae Mon Sep 17 00:00:00 2001 From: xiangpengzhao Date: Fri, 1 Dec 2017 11:24:04 +0800 Subject: [PATCH 1/2] Move some kubelet constants to a common place. --- .../apis/kubeletconfig/validation/validation.go | 10 +++++----- pkg/kubelet/cm/container_manager.go | 7 ------- pkg/kubelet/cm/node_container_manager.go | 7 ++++--- pkg/kubelet/eviction/helpers.go | 4 ++-- pkg/kubelet/eviction/helpers_test.go | 4 ++-- pkg/kubelet/types/constants.go | 5 +++++ test/e2e_node/eviction_test.go | 4 ++-- 7 files changed, 20 insertions(+), 21 deletions(-) diff --git a/pkg/kubelet/apis/kubeletconfig/validation/validation.go b/pkg/kubelet/apis/kubeletconfig/validation/validation.go index f0b243081bb..d3f95a0b88c 100644 --- a/pkg/kubelet/apis/kubeletconfig/validation/validation.go +++ b/pkg/kubelet/apis/kubeletconfig/validation/validation.go @@ -22,7 +22,7 @@ import ( utilerrors "k8s.io/apimachinery/pkg/util/errors" utilvalidation "k8s.io/apimachinery/pkg/util/validation" "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig" - containermanager "k8s.io/kubernetes/pkg/kubelet/cm" + kubetypes "k8s.io/kubernetes/pkg/kubelet/types" ) // ValidateKubeletConfiguration validates `kc` and returns an error if it is invalid @@ -91,13 +91,13 @@ func ValidateKubeletConfiguration(kc *kubeletconfig.KubeletConfiguration) error } for _, val := range kc.EnforceNodeAllocatable { switch val { - case containermanager.NodeAllocatableEnforcementKey: - case containermanager.SystemReservedEnforcementKey: - case containermanager.KubeReservedEnforcementKey: + case kubetypes.NodeAllocatableEnforcementKey: + case kubetypes.SystemReservedEnforcementKey: + case kubetypes.KubeReservedEnforcementKey: continue default: allErrors = append(allErrors, fmt.Errorf("Invalid option %q specified for EnforceNodeAllocatable (--enforce-node-allocatable) setting. Valid options are %q, %q or %q", - val, containermanager.NodeAllocatableEnforcementKey, containermanager.SystemReservedEnforcementKey, containermanager.KubeReservedEnforcementKey)) + val, kubetypes.NodeAllocatableEnforcementKey, kubetypes.SystemReservedEnforcementKey, kubetypes.KubeReservedEnforcementKey)) } } return utilerrors.NewAggregate(allErrors) diff --git a/pkg/kubelet/cm/container_manager.go b/pkg/kubelet/cm/container_manager.go index dfdcf8d82c8..626b251d6d7 100644 --- a/pkg/kubelet/cm/container_manager.go +++ b/pkg/kubelet/cm/container_manager.go @@ -122,13 +122,6 @@ type Status struct { SoftRequirements error } -const ( - // Uer visible keys for managing node allocatable enforcement on the node. - NodeAllocatableEnforcementKey = "pods" - SystemReservedEnforcementKey = "system-reserved" - KubeReservedEnforcementKey = "kube-reserved" -) - // containerManager for the kubelet is currently an injected dependency. // We need to parse the --qos-reserve-requests option in // cmd/kubelet/app/server.go and there isn't really a good place to put diff --git a/pkg/kubelet/cm/node_container_manager.go b/pkg/kubelet/cm/node_container_manager.go index 66e0d82467e..04e5acdd1a5 100644 --- a/pkg/kubelet/cm/node_container_manager.go +++ b/pkg/kubelet/cm/node_container_manager.go @@ -32,6 +32,7 @@ import ( kubefeatures "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/kubelet/events" evictionapi "k8s.io/kubernetes/pkg/kubelet/eviction/api" + kubetypes "k8s.io/kubernetes/pkg/kubelet/types" ) const ( @@ -62,7 +63,7 @@ func (cm *containerManagerImpl) enforceNodeAllocatableCgroups() error { // default cpu shares on cgroups are low and can cause cpu starvation. nodeAllocatable := cm.capacity // Use Node Allocatable limits instead of capacity if the user requested enforcing node allocatable. - if cm.CgroupsPerQOS && nc.EnforceNodeAllocatable.Has(NodeAllocatableEnforcementKey) { + if cm.CgroupsPerQOS && nc.EnforceNodeAllocatable.Has(kubetypes.NodeAllocatableEnforcementKey) { nodeAllocatable = cm.getNodeAllocatableAbsolute() } @@ -101,7 +102,7 @@ func (cm *containerManagerImpl) enforceNodeAllocatableCgroups() error { }() } // Now apply kube reserved and system reserved limits if required. - if nc.EnforceNodeAllocatable.Has(SystemReservedEnforcementKey) { + if nc.EnforceNodeAllocatable.Has(kubetypes.SystemReservedEnforcementKey) { glog.V(2).Infof("Enforcing System reserved on cgroup %q with limits: %+v", nc.SystemReservedCgroupName, nc.SystemReserved) if err := enforceExistingCgroup(cm.cgroupManager, nc.SystemReservedCgroupName, nc.SystemReserved); err != nil { message := fmt.Sprintf("Failed to enforce System Reserved Cgroup Limits on %q: %v", nc.SystemReservedCgroupName, err) @@ -110,7 +111,7 @@ func (cm *containerManagerImpl) enforceNodeAllocatableCgroups() error { } cm.recorder.Eventf(nodeRef, v1.EventTypeNormal, events.SuccessfulNodeAllocatableEnforcement, "Updated limits on system reserved cgroup %v", nc.SystemReservedCgroupName) } - if nc.EnforceNodeAllocatable.Has(KubeReservedEnforcementKey) { + if nc.EnforceNodeAllocatable.Has(kubetypes.KubeReservedEnforcementKey) { glog.V(2).Infof("Enforcing kube reserved on cgroup %q with limits: %+v", nc.KubeReservedCgroupName, nc.KubeReserved) if err := enforceExistingCgroup(cm.cgroupManager, nc.KubeReservedCgroupName, nc.KubeReserved); err != nil { message := fmt.Sprintf("Failed to enforce Kube Reserved Cgroup Limits on %q: %v", nc.KubeReservedCgroupName, err) diff --git a/pkg/kubelet/eviction/helpers.go b/pkg/kubelet/eviction/helpers.go index f8be310b34c..8be0c49a28e 100644 --- a/pkg/kubelet/eviction/helpers.go +++ b/pkg/kubelet/eviction/helpers.go @@ -29,9 +29,9 @@ import ( utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/kubernetes/pkg/features" statsapi "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" - "k8s.io/kubernetes/pkg/kubelet/cm" evictionapi "k8s.io/kubernetes/pkg/kubelet/eviction/api" "k8s.io/kubernetes/pkg/kubelet/server/stats" + kubetypes "k8s.io/kubernetes/pkg/kubelet/types" schedulerutils "k8s.io/kubernetes/plugin/pkg/scheduler/util" ) @@ -198,7 +198,7 @@ func parseThresholdStatement(signal evictionapi.Signal, val string) (evictionapi // getAllocatableThreshold returns the thresholds applicable for the allocatable configuration func getAllocatableThreshold(allocatableConfig []string) []evictionapi.Threshold { for _, key := range allocatableConfig { - if key == cm.NodeAllocatableEnforcementKey { + if key == kubetypes.NodeAllocatableEnforcementKey { return []evictionapi.Threshold{ { Signal: evictionapi.SignalAllocatableMemoryAvailable, diff --git a/pkg/kubelet/eviction/helpers_test.go b/pkg/kubelet/eviction/helpers_test.go index 7af5c795ba5..5a794112051 100644 --- a/pkg/kubelet/eviction/helpers_test.go +++ b/pkg/kubelet/eviction/helpers_test.go @@ -30,8 +30,8 @@ import ( api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/features" statsapi "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" - "k8s.io/kubernetes/pkg/kubelet/cm" evictionapi "k8s.io/kubernetes/pkg/kubelet/eviction/api" + kubetypes "k8s.io/kubernetes/pkg/kubelet/types" "k8s.io/kubernetes/pkg/quota" ) @@ -61,7 +61,7 @@ func TestParseThresholdConfig(t *testing.T) { expectThresholds: []evictionapi.Threshold{}, }, "all memory eviction values": { - allocatableConfig: []string{cm.NodeAllocatableEnforcementKey}, + allocatableConfig: []string{kubetypes.NodeAllocatableEnforcementKey}, evictionHard: map[string]string{"memory.available": "150Mi"}, evictionSoft: map[string]string{"memory.available": "300Mi"}, evictionSoftGracePeriod: map[string]string{"memory.available": "30s"}, diff --git a/pkg/kubelet/types/constants.go b/pkg/kubelet/types/constants.go index 65f17c4a7a6..b76b70a7578 100644 --- a/pkg/kubelet/types/constants.go +++ b/pkg/kubelet/types/constants.go @@ -24,4 +24,9 @@ const ( DockerContainerRuntime = "docker" RktContainerRuntime = "rkt" RemoteContainerRuntime = "remote" + + // User visible keys for managing node allocatable enforcement on the node. + NodeAllocatableEnforcementKey = "pods" + SystemReservedEnforcementKey = "system-reserved" + KubeReservedEnforcementKey = "kube-reserved" ) diff --git a/test/e2e_node/eviction_test.go b/test/e2e_node/eviction_test.go index 0d2cf113bac..064d02d7f91 100644 --- a/test/e2e_node/eviction_test.go +++ b/test/e2e_node/eviction_test.go @@ -28,8 +28,8 @@ import ( "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig" stats "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" - "k8s.io/kubernetes/pkg/kubelet/cm" kubeletmetrics "k8s.io/kubernetes/pkg/kubelet/metrics" + kubetypes "k8s.io/kubernetes/pkg/kubelet/types" "k8s.io/kubernetes/test/e2e/framework" . "github.com/onsi/ginkgo" @@ -104,7 +104,7 @@ var _ = framework.KubeDescribe("MemoryAllocatableEviction [Slow] [Serial] [Disru initialConfig.KubeReserved = map[string]string{ string(v1.ResourceMemory): kubeReserved.String(), } - initialConfig.EnforceNodeAllocatable = []string{cm.NodeAllocatableEnforcementKey} + initialConfig.EnforceNodeAllocatable = []string{kubetypes.NodeAllocatableEnforcementKey} initialConfig.CgroupsPerQOS = true }) runEvictionTest(f, pressureTimeout, expectedNodeCondition, logMemoryMetrics, []podEvictSpec{ From 8048823d0e1afed753d09d5ca3b4aabd97554280 Mon Sep 17 00:00:00 2001 From: xiangpengzhao Date: Fri, 1 Dec 2017 11:24:41 +0800 Subject: [PATCH 2/2] Auto generated BUILD files. --- pkg/kubelet/apis/kubeletconfig/validation/BUILD | 2 +- pkg/kubelet/cm/BUILD | 1 + pkg/kubelet/eviction/BUILD | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/kubelet/apis/kubeletconfig/validation/BUILD b/pkg/kubelet/apis/kubeletconfig/validation/BUILD index 7383b8a0c22..cbbd5b9f70b 100644 --- a/pkg/kubelet/apis/kubeletconfig/validation/BUILD +++ b/pkg/kubelet/apis/kubeletconfig/validation/BUILD @@ -12,7 +12,7 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation", deps = [ "//pkg/kubelet/apis/kubeletconfig:go_default_library", - "//pkg/kubelet/cm:go_default_library", + "//pkg/kubelet/types:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", ], diff --git a/pkg/kubelet/cm/BUILD b/pkg/kubelet/cm/BUILD index 127192c637d..039c5941d22 100644 --- a/pkg/kubelet/cm/BUILD +++ b/pkg/kubelet/cm/BUILD @@ -57,6 +57,7 @@ go_library( "//pkg/kubelet/events:go_default_library", "//pkg/kubelet/metrics:go_default_library", "//pkg/kubelet/qos:go_default_library", + "//pkg/kubelet/types:go_default_library", "//pkg/util/file:go_default_library", "//pkg/util/oom:go_default_library", "//pkg/util/procfs:go_default_library", diff --git a/pkg/kubelet/eviction/BUILD b/pkg/kubelet/eviction/BUILD index 0f4d6f82099..44f167752f1 100644 --- a/pkg/kubelet/eviction/BUILD +++ b/pkg/kubelet/eviction/BUILD @@ -18,7 +18,6 @@ go_test( "//pkg/apis/core:go_default_library", "//pkg/features:go_default_library", "//pkg/kubelet/apis/stats/v1alpha1:go_default_library", - "//pkg/kubelet/cm:go_default_library", "//pkg/kubelet/eviction/api:go_default_library", "//pkg/kubelet/lifecycle:go_default_library", "//pkg/kubelet/types:go_default_library",