From 2369ef090e4f493a8c960c4107bd18f308d37aa2 Mon Sep 17 00:00:00 2001 From: Clayton Coleman Date: Mon, 13 Apr 2020 20:44:47 -0400 Subject: [PATCH 1/2] Promote service exclusion and legacy node role to beta We did not promote these to beta in 1.18 but will do so in 1.19. As per the KEP we do not set disable LegacyNodeRoleBehavior to false until 1.20. --- pkg/features/kube_features.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index d101b7575cd..c5e7f866d2f 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -146,18 +146,21 @@ const ( // owner @smarterclayton // alpha: v1.16 + // beta: v1.19 // // Enable legacy behavior to vary cluster functionality on the node-role.kubernetes.io labels. On by default (legacy), will be turned off in 1.18. LegacyNodeRoleBehavior featuregate.Feature = "LegacyNodeRoleBehavior" // owner @brendandburns // alpha: v1.9 + // beta: v1.19 // // Enable nodes to exclude themselves from service load balancers ServiceNodeExclusion featuregate.Feature = "ServiceNodeExclusion" // owner @smarterclayton // alpha: v1.16 + // beta: v1.19 // // Enable nodes to exclude themselves from network disruption checks NodeDisruptionExclusion featuregate.Feature = "NodeDisruptionExclusion" @@ -597,8 +600,8 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS CPUManager: {Default: true, PreRelease: featuregate.Beta}, CPUCFSQuotaPeriod: {Default: false, PreRelease: featuregate.Alpha}, TopologyManager: {Default: true, PreRelease: featuregate.Beta}, - ServiceNodeExclusion: {Default: false, PreRelease: featuregate.Alpha}, - NodeDisruptionExclusion: {Default: false, PreRelease: featuregate.Alpha}, + ServiceNodeExclusion: {Default: true, PreRelease: featuregate.Beta}, + NodeDisruptionExclusion: {Default: true, PreRelease: featuregate.Beta}, CSIDriverRegistry: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.20 CSINodeInfo: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.19 BlockVolume: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.20 @@ -674,5 +677,5 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS // features that enable backwards compatibility but are scheduled to be removed // ... HPAScaleToZero: {Default: false, PreRelease: featuregate.Alpha}, - LegacyNodeRoleBehavior: {Default: true, PreRelease: featuregate.Alpha}, + LegacyNodeRoleBehavior: {Default: true, PreRelease: featuregate.Beta}, } From d70b31e282f649dc466851bdf6de03e53bc27354 Mon Sep 17 00:00:00 2001 From: Clayton Coleman Date: Mon, 13 Apr 2020 20:58:43 -0400 Subject: [PATCH 2/2] Remove the legacy load balancer exclusion annotation alpha.service-controller.kubernetes.io/exclude-balancer is now removed, deployers should use node.kubernetes.io/exclude-from-external-load-balancers. --- pkg/controller/service/controller.go | 9 --------- pkg/controller/service/controller_test.go | 2 -- 2 files changed, 11 deletions(-) diff --git a/pkg/controller/service/controller.go b/pkg/controller/service/controller.go index 2cfc08363b1..ccfce3e72d8 100644 --- a/pkg/controller/service/controller.go +++ b/pkg/controller/service/controller.go @@ -70,11 +70,6 @@ const ( // in 1.16 when the ServiceNodeExclusion gate is on. labelNodeRoleExcludeBalancer = "node.kubernetes.io/exclude-from-external-load-balancers" - // labelAlphaNodeRoleExcludeBalancer specifies that the node should be - // exclude from load balancers created by a cloud provider. This label is deprecated and will - // be removed in 1.18. - labelAlphaNodeRoleExcludeBalancer = "alpha.service-controller.kubernetes.io/exclude-balancer" - // serviceNodeExclusionFeature is the feature gate name that // enables nodes to exclude themselves from service load balancers // originated from: https://github.com/kubernetes/kubernetes/blob/28e800245e/pkg/features/kube_features.go#L178 @@ -618,10 +613,6 @@ func getNodeConditionPredicate() NodeConditionPredicate { } } if utilfeature.DefaultFeatureGate.Enabled(serviceNodeExclusionFeature) { - // Will be removed in 1.18 - if _, hasExcludeBalancerLabel := node.Labels[labelAlphaNodeRoleExcludeBalancer]; hasExcludeBalancerLabel { - return false - } if _, hasExcludeBalancerLabel := node.Labels[labelNodeRoleExcludeBalancer]; hasExcludeBalancerLabel { return false } diff --git a/pkg/controller/service/controller_test.go b/pkg/controller/service/controller_test.go index 61433a8ca82..41e822d1eef 100644 --- a/pkg/controller/service/controller_test.go +++ b/pkg/controller/service/controller_test.go @@ -1404,13 +1404,11 @@ func Test_getNodeConditionPredicate(t *testing.T) { {want: true, input: &v1.Node{Status: validNodeStatus, ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{}}}}, {want: true, input: &v1.Node{Status: validNodeStatus, ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{labelNodeRoleMaster: ""}}}}, {want: true, input: &v1.Node{Status: validNodeStatus, ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{labelNodeRoleExcludeBalancer: ""}}}}, - {want: true, input: &v1.Node{Status: validNodeStatus, ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{labelAlphaNodeRoleExcludeBalancer: ""}}}}, {want: true, enableExclusion: true, input: &v1.Node{Status: validNodeStatus, ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{labelNodeRoleMaster: ""}}}}, {want: true, enableLegacy: true, input: &v1.Node{Status: validNodeStatus, ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{labelNodeRoleExcludeBalancer: ""}}}}, {want: false, enableLegacy: true, input: &v1.Node{Status: validNodeStatus, ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{labelNodeRoleMaster: ""}}}}, - {want: false, enableExclusion: true, input: &v1.Node{Status: validNodeStatus, ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{labelAlphaNodeRoleExcludeBalancer: ""}}}}, {want: false, enableExclusion: true, input: &v1.Node{Status: validNodeStatus, ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{labelNodeRoleExcludeBalancer: ""}}}}, } for _, tt := range tests {