From 75102e4f607a01b3496b8d4b5c5bbd97624ef645 Mon Sep 17 00:00:00 2001 From: wojtekt Date: Fri, 25 Oct 2019 13:24:38 +0200 Subject: [PATCH] Promote NodeLease feature to GA --- .../en/docs/concepts/architecture/nodes.md | 33 ++++++++++++------- .../feature-gates.md | 5 +-- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/content/en/docs/concepts/architecture/nodes.md b/content/en/docs/concepts/architecture/nodes.md index b9aacc4a80156..85dd9fa1895c2 100644 --- a/content/en/docs/concepts/architecture/nodes.md +++ b/content/en/docs/concepts/architecture/nodes.md @@ -173,18 +173,27 @@ 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 + +Heartbeats, sent by Kubernetes nodes, help determine the availability of a node. +There are two forms of heartbeats: updates of `NodeStatus` and the +[Lease object](/docs/reference/generated/kubernetes-api/{{< latest-version >}}/#lease-v1-coordination-k8s-io). +Each Node has an associated Lease object in the `kube-node-lease` +{{< glossary_tooltip term_id="namespace" text="namespace">}}. +Compared to the Node resource, the Lease is a lightweight resource, which improves +the performance of the node heartbeats as the cluster scales. + +The kubelet is responsible for creating and updating `NodeStatus` and a Lease. + +- The kubelet updates the `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). +- The kubelet creates and then updates its Lease object every 10 seconds + (the default update interval). Lease updates occur independently from the + `NodeStatus` updates. + +#### 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 | - |