diff --git a/content/en/docs/concepts/architecture/nodes.md b/content/en/docs/concepts/architecture/nodes.md index b9aacc4a80156..edb7187b3e63e 100644 --- a/content/en/docs/concepts/architecture/nodes.md +++ b/content/en/docs/concepts/architecture/nodes.md @@ -173,18 +173,21 @@ to be unreachable. (The default timeouts are 40s to start reporting ConditionUnknown and 5m after that to start evicting pods.) The node controller checks the state of each node every `--node-monitor-period` seconds. -In versions of Kubernetes prior to 1.13, NodeStatus is the heartbeat from the -node. Node lease feature is enabled by default since 1.14 as a beta feature -(feature gate `NodeLease`, [KEP-0009](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/0009-node-heartbeat.md)). -When node lease feature is enabled, each node has an associated `Lease` object in -`kube-node-lease` namespace that is renewed by the node periodically, and both -NodeStatus and node lease are treated as heartbeats from the node. Node leases -are renewed frequently while NodeStatus is reported from node to master only -when there is some change or enough time has passed (default is 1 minute, which -is longer than the default timeout of 40 seconds for unreachable nodes). Since -node lease is much more lightweight than NodeStatus, this feature makes node -heartbeat significantly cheaper from both scalability and performance -perspectives. +#### Heartbeats + +Each Node has an associated Lease object in the `kube-node-lease` +{{< glossary_tooltip term_id="namespace" text="namespace">}}. +The kubelet updates its Lease object frequently to show that its Node +is healthy. In the control plane, both NodeStatus and the Lease are +treated as heartbeats from the node. +The kubelet updates NodeStatus either when there is change in status, or +if there has been no update for a configured interval. The default interval +for NodeStatus updates is 5 minutes (much longer than the 40 second +default timeout for unreachable nodes). +Compared to the Node resource, the Lease object is lightweight. The Lease +resource improves the performance of the node heartbeats as the cluster scales. + +#### Reliability In Kubernetes 1.4, we updated the logic of the node controller to better handle cases when a large number of nodes have problems with reaching the master diff --git a/content/en/docs/reference/command-line-tools-reference/feature-gates.md b/content/en/docs/reference/command-line-tools-reference/feature-gates.md index 777941f8c9819..696df2ef9f75e 100644 --- a/content/en/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/en/docs/reference/command-line-tools-reference/feature-gates.md @@ -100,8 +100,6 @@ different Kubernetes components. | `LocalStorageCapacityIsolationFSQuotaMonitoring` | `false` | Alpha | 1.15 | | | `MountContainers` | `false` | Alpha | 1.9 | | | `NodeDisruptionExclusion` | `false` | Alpha | 1.16 | | -| `NodeLease` | `false` | Alpha | 1.12 | 1.13 | -| `NodeLease` | `true` | Beta | 1.14 | | | `NonPreemptingPriority` | `false` | Alpha | 1.15 | | | `PodOverhead` | `false` | Alpha | 1.16 | - | | `PodShareProcessNamespace` | `false` | Alpha | 1.10 | 1.11 | @@ -213,6 +211,9 @@ different Kubernetes components. | `MountPropagation` | `false` | Alpha | 1.8 | 1.9 | | `MountPropagation` | `true` | Beta | 1.10 | 1.11 | | `MountPropagation` | `true` | GA | 1.12 | - | +| `NodeLease` | `false` | Alpha | 1.12 | 1.13 | +| `NodeLease` | `true` | Beta | 1.14 | 1.16 | +| `NodeLease` | `true` | GA | 1.17 | - | | `PersistentLocalVolumes` | `false` | Alpha | 1.7 | 1.9 | | `PersistentLocalVolumes` | `true` | Beta | 1.10 | 1.13 | | `PersistentLocalVolumes` | `true` | GA | 1.14 | - |