Promote NodeLease feature to GA (#17189)

This commit is contained in:
Wojciech Tyczynski
2019-11-18 14:13:43 +01:00
committed by Bob Killen
parent b04abcfb61
commit 1a884b1f97
2 changed files with 25 additions and 14 deletions
+22 -12
View File
@@ -172,18 +172,28 @@ to be unreachable. (The default timeouts are 40s to start reporting
ConditionUnknown and 5m after that to start evicting pods.) The node controller ConditionUnknown and 5m after that to start evicting pods.) The node controller
checks the state of each node every `--node-monitor-period` seconds. 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 #### Heartbeats
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)). Heartbeats, sent by Kubernetes nodes, help determine the availability of a node.
When node lease feature is enabled, each node has an associated `Lease` object in There are two forms of heartbeats: updates of `NodeStatus` and the
`kube-node-lease` namespace that is renewed by the node periodically, and both [Lease object](/docs/reference/generated/kubernetes-api/{{< latest-version >}}/#lease-v1-coordination-k8s-io).
NodeStatus and node lease are treated as heartbeats from the node. Node leases Each Node has an associated Lease object in the `kube-node-lease`
are renewed frequently while NodeStatus is reported from node to master only {{< glossary_tooltip term_id="namespace" text="namespace">}}.
when there is some change or enough time has passed (default is 1 minute, which Lease is a lightweight resource, which improves the performance
is longer than the default timeout of 40 seconds for unreachable nodes). Since of the node heartbeats as the cluster scales.
node lease is much more lightweight than NodeStatus, this feature makes node
heartbeat significantly cheaper from both scalability and performance The kubelet is responsible for creating and updating the `NodeStatus` and
perspectives. a Lease object.
- 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 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 cases when a large number of nodes have problems with reaching the master
@@ -108,8 +108,6 @@ different Kubernetes components.
| `LocalStorageCapacityIsolationFSQuotaMonitoring` | `false` | Alpha | 1.15 | | | `LocalStorageCapacityIsolationFSQuotaMonitoring` | `false` | Alpha | 1.15 | |
| `MountContainers` | `false` | Alpha | 1.9 | | | `MountContainers` | `false` | Alpha | 1.9 | |
| `NodeDisruptionExclusion` | `false` | Alpha | 1.16 | | | `NodeDisruptionExclusion` | `false` | Alpha | 1.16 | |
| `NodeLease` | `false` | Alpha | 1.12 | 1.13 |
| `NodeLease` | `true` | Beta | 1.14 | |
| `NonPreemptingPriority` | `false` | Alpha | 1.15 | | | `NonPreemptingPriority` | `false` | Alpha | 1.15 | |
| `PodOverhead` | `false` | Alpha | 1.16 | - | | `PodOverhead` | `false` | Alpha | 1.16 | - |
| `PodShareProcessNamespace` | `false` | Alpha | 1.10 | 1.11 | | `PodShareProcessNamespace` | `false` | Alpha | 1.10 | 1.11 |
@@ -221,6 +219,9 @@ different Kubernetes components.
| `MountPropagation` | `false` | Alpha | 1.8 | 1.9 | | `MountPropagation` | `false` | Alpha | 1.8 | 1.9 |
| `MountPropagation` | `true` | Beta | 1.10 | 1.11 | | `MountPropagation` | `true` | Beta | 1.10 | 1.11 |
| `MountPropagation` | `true` | GA | 1.12 | - | | `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` | `false` | Alpha | 1.7 | 1.9 |
| `PersistentLocalVolumes` | `true` | Beta | 1.10 | 1.13 | | `PersistentLocalVolumes` | `true` | Beta | 1.10 | 1.13 |
| `PersistentLocalVolumes` | `true` | GA | 1.14 | - | | `PersistentLocalVolumes` | `true` | GA | 1.14 | - |