You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Modernise the page by:
- rewording to follow the style guide
- adding some glossary tooltips
- linking to new-style API reference
- linking to Safely Drain a Node
plus general tweaks.
Copy file name to clipboardExpand all lines: content/en/docs/concepts/architecture/nodes.md
+76-46Lines changed: 76 additions & 46 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -122,6 +122,9 @@ To mark a Node unschedulable, run:
122
122
kubectl cordon $NODENAME
123
123
```
124
124
125
+
See [Safely Drain a Node](/docs/tasks/administer-cluster/safely-drain-node/)
126
+
for more details.
127
+
125
128
{{< note >}}
126
129
Pods that are part of a {{< glossary_tooltip term_id="daemonset" >}} tolerate
127
130
being run on an unschedulable Node. DaemonSets typically provide node-local services
@@ -162,8 +165,8 @@ The `conditions` field describes the status of all `Running` nodes. Examples of
162
165
| Node Condition | Description |
163
166
|----------------------|-------------|
164
167
|`Ready`|`True` if the node is healthy and ready to accept pods, `False` if the node is not healthy and is not accepting pods, and `Unknown` if the node controller has not heard from the node in the last `node-monitor-grace-period` (default is 40 seconds) |
165
-
|`DiskPressure`|`True` if pressure exists on the disk size--that is, if the disk capacity is low; otherwise `False`|
166
-
|`MemoryPressure`|`True` if pressure exists on the node memory--that is, if the node memory is low; otherwise `False`|
168
+
|`DiskPressure`|`True` if pressure exists on the disk size—that is, if the disk capacity is low; otherwise `False`|
169
+
|`MemoryPressure`|`True` if pressure exists on the node memory—that is, if the node memory is low; otherwise `False`|
167
170
|`PIDPressure`|`True` if pressure exists on the processes—that is, if there are too many processes on the node; otherwise `False`|
168
171
|`NetworkUnavailable`|`True` if the network for the node is not correctly configured, otherwise `False`|
169
172
{{< /table >}}
@@ -174,7 +177,8 @@ If you use command-line tools to print details of a cordoned Node, the Condition
174
177
cordoned nodes are marked Unschedulable in their spec.
175
178
{{< /note >}}
176
179
177
-
The node condition is represented as a JSON object. For example, the following structure describes a healthy node:
180
+
In the Kubernetes API, a node's condition is represented as part of the `.status`
181
+
of the Node resource. For example, the following JSON structure describes a healthy node:
178
182
179
183
```json
180
184
"conditions": [
@@ -189,7 +193,17 @@ The node condition is represented as a JSON object. For example, the following s
189
193
]
190
194
```
191
195
192
-
If the Status of the Ready condition remains `Unknown` or `False` for longer than the `pod-eviction-timeout` (an argument passed to the {{< glossary_tooltip text="kube-controller-manager" term_id="kube-controller-manager" >}}), then all the Pods on the node are scheduled for deletion by the node controller. The default eviction timeout duration is **five minutes**. In some cases when the node is unreachable, the API server is unable to communicate with the kubelet on the node. The decision to delete the pods cannot be communicated to the kubelet until communication with the API server is re-established. In the meantime, the pods that are scheduled for deletion may continue to run on the partitioned node.
196
+
If the `status` of the Ready condition remains `Unknown` or `False` for longer
197
+
than the `pod-eviction-timeout` (an argument passed to the
for all Pods assigned to that node. The default eviction timeout duration is
202
+
**five minutes**.
203
+
In some cases when the node is unreachable, the API server is unable to communicate
204
+
with the kubelet on the node. The decision to delete the pods cannot be communicated to
205
+
the kubelet until communication with the API server is re-established. In the meantime,
206
+
the pods that are scheduled for deletion may continue to run on the partitioned node.
193
207
194
208
The node controller does not force delete pods until it is confirmed that they have stopped
195
209
running in the cluster. You can see the pods that might be running on an unreachable node as
@@ -199,10 +213,12 @@ may need to delete the node object by hand. Deleting the node object from Kubern
199
213
all the Pod objects running on the node to be deleted from the API server and frees up their
200
214
names.
201
215
202
-
The node lifecycle controller automatically creates
203
-
[taints](/docs/concepts/scheduling-eviction/taint-and-toleration/) that represent conditions.
216
+
When problems occur on nodes, the Kubernetes control plane automatically creates
217
+
[taints](/docs/concepts/scheduling-eviction/taint-and-toleration/) that match the conditions
218
+
affecting the node.
204
219
The scheduler takes the Node's taints into consideration when assigning a Pod to a Node.
205
-
Pods can also have tolerations which let them tolerate a Node's taints.
220
+
Pods can also have {{< glossary_tooltip text="tolerations" term_id="toleration" >}} that let
221
+
them run on a Node even though it has a specific taint.
206
222
207
223
See [Taint Nodes by Condition](/docs/concepts/scheduling-eviction/taint-and-toleration/#taint-nodes-by-condition)
208
224
for more details.
@@ -222,10 +238,43 @@ on a Node.
222
238
223
239
### Info
224
240
225
-
Describes general information about the node, such as kernel version, Kubernetes version (kubelet and kube-proxy version), Docker version (if used), and OS name.
226
-
This information is gathered by Kubelet from the node.
241
+
Describes general information about the node, such as kernel version, Kubernetes
242
+
version (kubelet and kube-proxy version), container runtime details, and which
243
+
operating system the node uses.
244
+
The kubelet gathers this information from the node and publishes it into
245
+
the Kubernetes API.
246
+
247
+
## Heartbeats
248
+
249
+
Heartbeats, sent by Kubernetes nodes, help your cluster determine the
250
+
availability of each node, and to take action when failures are detected.
0 commit comments