diff --git a/pkg/controller/nodelifecycle/node_lifecycle_controller.go b/pkg/controller/nodelifecycle/node_lifecycle_controller.go index 2b2c2bf02cf..5d05b7251c1 100644 --- a/pkg/controller/nodelifecycle/node_lifecycle_controller.go +++ b/pkg/controller/nodelifecycle/node_lifecycle_controller.go @@ -314,8 +314,7 @@ type Controller struct { // Controller will not proactively sync node health, but will monitor node // health signal updated from kubelet. There are 2 kinds of node healthiness - // signals: NodeStatus and NodeLease. NodeLease signal is generated only when - // NodeLease feature is enabled. If it doesn't receive update for this amount + // signals: NodeStatus and NodeLease. If it doesn't receive update for this amount // of time, it will start posting "NodeReady==ConditionUnknown". The amount of // time before which Controller start evicting pods is controlled via flag // 'pod-eviction-timeout'. diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 0a459f47adb..0f6f00bb3c9 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -185,15 +185,6 @@ const ( // Enables RuntimeClass, for selecting between multiple runtimes to run a pod. RuntimeClass featuregate.Feature = "RuntimeClass" - // owner: @mtaufen - // alpha: v1.12 - // beta: v1.14 - // GA: v1.17 - // - // Kubelet uses the new Lease API to report node heartbeats, - // (Kube) Node Lifecycle Controller uses these heartbeats as a node health signal. - NodeLease featuregate.Feature = "NodeLease" - // owner: @rikatz // kep: http://kep.k8s.io/2079 // alpha: v1.21 @@ -786,7 +777,6 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS GenericEphemeralVolume: {Default: true, PreRelease: featuregate.Beta}, CSIVolumeFSGroupPolicy: {Default: true, PreRelease: featuregate.Beta}, RuntimeClass: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.23 - NodeLease: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, NetworkPolicyEndPort: {Default: true, PreRelease: featuregate.Beta}, ProcMountType: {Default: false, PreRelease: featuregate.Alpha}, TTLAfterFinished: {Default: true, PreRelease: featuregate.Beta}, diff --git a/staging/src/k8s.io/kubelet/config/v1beta1/types.go b/staging/src/k8s.io/kubelet/config/v1beta1/types.go index 2062b2d2bf7..0a9212a9134 100644 --- a/staging/src/k8s.io/kubelet/config/v1beta1/types.go +++ b/staging/src/k8s.io/kubelet/config/v1beta1/types.go @@ -383,14 +383,13 @@ type KubeletConfiguration struct { // Default: "5m" // +optional NodeStatusReportFrequency metav1.Duration `json:"nodeStatusReportFrequency,omitempty"` - // nodeLeaseDurationSeconds is the duration the Kubelet will set on its corresponding Lease, - // when the NodeLease feature is enabled. This feature provides an indicator of node - // health by having the Kubelet create and periodically renew a lease, named after the node, - // in the kube-node-lease namespace. If the lease expires, the node can be considered unhealthy. - // The lease is currently renewed every 10s, per KEP-0009. In the future, the lease renewal interval - // may be set based on the lease duration. + // nodeLeaseDurationSeconds is the duration the Kubelet will set on its corresponding Lease. + // NodeLease provides an indicator of node health by having the Kubelet create and + // periodically renew a lease, named after the node, in the kube-node-lease namespace. + // If the lease expires, the node can be considered unhealthy. + // The lease is currently renewed every 10s, per KEP-0009. In the future, the lease renewal + // interval may be set based on the lease duration. // The field value must be greater than 0. - // Requires the NodeLease feature gate to be enabled. // If DynamicKubeletConfig (deprecated; default off) is on, when // dynamically updating this field, consider that // decreasing the duration may reduce tolerance for issues that temporarily prevent @@ -399,11 +398,9 @@ type KubeletConfiguration struct { // +optional NodeLeaseDurationSeconds int32 `json:"nodeLeaseDurationSeconds,omitempty"` // imageMinimumGCAge is the minimum age for an unused image before it is - // garbage collected. - // If DynamicKubeletConfig (deprecated; default off) is on, when - // dynamically updating this field, consider that - // it may trigger or delay garbage collection, and may change the image overhead - // on the node. + // garbage collected. If DynamicKubeletConfig (deprecated; default off) + // is on, when dynamically updating this field, consider that it may trigger or + // delay garbage collection, and may change the image overhead on the node. // Default: "2m" // +optional ImageMinimumGCAge metav1.Duration `json:"imageMinimumGCAge,omitempty"` diff --git a/test/e2e/common/node/node_lease.go b/test/e2e/common/node/node_lease.go index 53965b94d20..ed8d799f428 100644 --- a/test/e2e/common/node/node_lease.go +++ b/test/e2e/common/node/node_lease.go @@ -46,7 +46,7 @@ var _ = SIGDescribe("NodeLease", func() { nodeName = node.Name }) - ginkgo.Context("when the NodeLease feature is enabled", func() { + ginkgo.Context("NodeLease", func() { ginkgo.It("the kubelet should create and update a lease in the kube-node-lease namespace", func() { leaseClient := f.ClientSet.CoordinationV1().Leases(v1.NamespaceNodeLease) var (