From c85e4dc1de77f2b9a50ef716b7da51bb1e40942f Mon Sep 17 00:00:00 2001 From: Klaus Ma Date: Tue, 25 Jul 2017 15:21:51 +0800 Subject: [PATCH 1/2] Added node taints labels. --- .../scheduler/algorithm/well_known_labels.go | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/plugin/pkg/scheduler/algorithm/well_known_labels.go b/plugin/pkg/scheduler/algorithm/well_known_labels.go index baa9f73f8c8..fcb45c7e5c5 100644 --- a/plugin/pkg/scheduler/algorithm/well_known_labels.go +++ b/plugin/pkg/scheduler/algorithm/well_known_labels.go @@ -28,6 +28,26 @@ const ( // and removed when node becomes reachable (NodeReady status ConditionTrue). TaintNodeUnreachable = "node.alpha.kubernetes.io/unreachable" + // When feature-gate for TaintBasedEvictions=true flag is enabled, + // TaintNodeOutOfDisk would be automatically added by node controller + // when node becomes out of disk, and removed when node has enough disk. + TaintNodeOutOfDisk = "node.alpha.kubernetes.io/outOfDisk" + + // When feature-gate for TaintBasedEvictions=true flag is enabled, + // TaintNodeMemoryPressure would be automatically added by node controller + // when node has memory pressure, and removed when node has enough memory. + TaintNodeMemoryPressure = "node.alpha.kubernetes.io/memoryPressure" + + // When feature-gate for TaintBasedEvictions=true flag is enabled, + // TaintNodeDiskPressure would be automatically added by node controller + // when node has disk pressure, and removed when node has enough disk. + TaintNodeDiskPressure = "node.alpha.kubernetes.io/diskPressure" + + // When feature-gate for TaintBasedEvictions=true flag is enabled, + // TaintNodeNetworkUnavailable would be automatically added by node controller + // when node's network is unavailable, and removed when network becomes ready. + TaintNodeNetworkUnavailable = "node.alpha.kubernetes.io/networkUnavailable" + // When kubelet is started with the "external" cloud provider, then // it sets this taint on a node to mark it as unusable, until a controller // from the cloud-controller-manager intitializes this node, and then removes From ec4aa192cc2211ee54075105f96cda631217b538 Mon Sep 17 00:00:00 2001 From: Klaus Ma Date: Thu, 27 Jul 2017 11:41:23 +0800 Subject: [PATCH 2/2] Added taints node by condition feature flag. --- pkg/features/kube_features.go | 8 ++++++++ plugin/pkg/scheduler/algorithm/well_known_labels.go | 8 ++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index b18b106e8bd..696e84c7d08 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -126,6 +126,13 @@ const ( // // Enable equivalence class cache for scheduler. EnableEquivalenceClassCache utilfeature.Feature = "EnableEquivalenceClassCache" + + // owner: @k82cn + // alpha: v1.8 + // + // Taint nodes based on their condition status for 'NetworkUnavailable', + // 'MemoryPressure', 'OutOfDisk' and 'DiskPressure'. + TaintNodesByCondition utilfeature.Feature = "TaintNodesByCondition" ) func init() { @@ -156,4 +163,5 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS // unintentionally on either side: StreamingProxyRedirects: {Default: true, PreRelease: utilfeature.Beta}, genericfeatures.AdvancedAuditing: {Default: false, PreRelease: utilfeature.Alpha}, + TaintNodesByCondition: {Default: false, PreRelease: utilfeature.Alpha}, } diff --git a/plugin/pkg/scheduler/algorithm/well_known_labels.go b/plugin/pkg/scheduler/algorithm/well_known_labels.go index fcb45c7e5c5..329d06458a8 100644 --- a/plugin/pkg/scheduler/algorithm/well_known_labels.go +++ b/plugin/pkg/scheduler/algorithm/well_known_labels.go @@ -31,22 +31,22 @@ const ( // When feature-gate for TaintBasedEvictions=true flag is enabled, // TaintNodeOutOfDisk would be automatically added by node controller // when node becomes out of disk, and removed when node has enough disk. - TaintNodeOutOfDisk = "node.alpha.kubernetes.io/outOfDisk" + TaintNodeOutOfDisk = "node.kubernetes.io/outOfDisk" // When feature-gate for TaintBasedEvictions=true flag is enabled, // TaintNodeMemoryPressure would be automatically added by node controller // when node has memory pressure, and removed when node has enough memory. - TaintNodeMemoryPressure = "node.alpha.kubernetes.io/memoryPressure" + TaintNodeMemoryPressure = "node.kubernetes.io/memoryPressure" // When feature-gate for TaintBasedEvictions=true flag is enabled, // TaintNodeDiskPressure would be automatically added by node controller // when node has disk pressure, and removed when node has enough disk. - TaintNodeDiskPressure = "node.alpha.kubernetes.io/diskPressure" + TaintNodeDiskPressure = "node.kubernetes.io/diskPressure" // When feature-gate for TaintBasedEvictions=true flag is enabled, // TaintNodeNetworkUnavailable would be automatically added by node controller // when node's network is unavailable, and removed when network becomes ready. - TaintNodeNetworkUnavailable = "node.alpha.kubernetes.io/networkUnavailable" + TaintNodeNetworkUnavailable = "node.kubernetes.io/networkUnavailable" // When kubelet is started with the "external" cloud provider, then // it sets this taint on a node to mark it as unusable, until a controller