diff --git a/content/en/docs/concepts/architecture/nodes.md b/content/en/docs/concepts/architecture/nodes.md index f5bb11bf37e48..5b084c4bdf275 100644 --- a/content/en/docs/concepts/architecture/nodes.md +++ b/content/en/docs/concepts/architecture/nodes.md @@ -159,6 +159,20 @@ 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. Starting from Kubernetes 1.13, node lease feature is introduced as an +alpha feature (feature gate `NodeLease`, +[KEP-0009](https://github.com/kubernetes/community/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. + 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 (e.g. because the master has networking problem). Starting with 1.4, the node