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 baa9f73f8c8..329d06458a8 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.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.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.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.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