Skip to content

Commit

Permalink
Promote NodeLease feature to GA
Browse files Browse the repository at this point in the history
  • Loading branch information
wojtek-t committed Nov 8, 2019
1 parent d9b3045 commit a8d83ff
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 14 deletions.
27 changes: 15 additions & 12 deletions content/en/docs/concepts/architecture/nodes.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand Down Expand Up @@ -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 | - |
Expand Down

0 comments on commit a8d83ff

Please sign in to comment.