Skip to content

Commit d013a63

Browse files
authored
Merge pull request #75752 from StephenJamesSmith/TELCODOCS-1826
TELCODOCS-1826: Day 0 - Day 2 kmods
2 parents fab8d4f + 7201a84 commit d013a63

File tree

4 files changed

+80
-0
lines changed

4 files changed

+80
-0
lines changed

hardware_enablement/kmm-kernel-module-management.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,11 @@ include::modules/kmm-configuring-the-lookup-path-on-nodes.adoc[leveloffset=+2]
158158
include::modules/kmm-building-a-kmod-image.adoc[leveloffset=+2]
159159
include::modules/kmm-tuning-the-module-resource.adoc[leveloffset=+2]
160160
161+
// Added for TELCODOCS-1826
162+
include::modules/kmm-day0-day2-installation.adoc[leveloffset=+1]
163+
include::modules/kmm-layering-background.adoc[leveloffset=+2]
164+
include::modules/kmm-day0-day2-lifecycle-management.adoc[leveloffset=+2]
165+
161166
// Added for TELCODOCS-1059
162167
include::modules/kmm-troubleshooting.adoc[leveloffset=+1]
163168
// Added for TELCODOCS-1820
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * updating/preparing_for_updates/kmm-preflight-validation.adoc
4+
5+
:_mod-docs-content-type: CONCEPT
6+
[id="kmm-day0-day2-installation_{context}"]
7+
= Day 0 through Day 2 kmod installation
8+
9+
You can install some kernel modules (kmods) during Day 0 through Day 2 operations without Kernel Module Management (KMM). This could assist in the transition of the kmods to KMM.
10+
11+
Use the following criteria to determine suitable kmod installations.
12+
13+
Day 0:: The most basic kmods that are required for a node to become `Ready` in the cluster. Examples of these types of kmods include:
14+
+
15+
* A storage driver that is required to mount the rootFS as part of the boot process
16+
* A network driver that is required for the machine to access `machine-config-server` on the bootstrap node to pull the ignition and join the cluster
17+
18+
Day 1:: Kmods that are not required for a node to become `Ready` in the cluster but cannot be unloaded when the node is `Ready`.
19+
+
20+
An example of this type of kmod is an out-of-tree (OOT) network driver that replaces an outdated in-tree driver to exploit the full potential of the NIC while `NetworkManager` depends on it. When the node is `Ready`, you cannot unload the driver because of the `NetworkManager` dependency.
21+
22+
Day 2:: Kmods that can be dynamically loaded to the kernel or removed from it without interfering with the cluster infrastructure, for example, connectivity.
23+
+
24+
Examples of these types of kmods include:
25+
+
26+
* GPU operators
27+
* Secondary network adapters
28+
* field-programmable gate arrays (FPGAs)
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * updating/preparing_for_updates/kmm-preflight-validation.adoc
4+
5+
:_mod-docs-content-type: CONCEPT
6+
[id="kmm-day0-day2-lifecycle-management_{context}"]
7+
= Lifecycle management
8+
9+
You can leverage KMM to manage the Day 0 through Day 2 lifecycle of kmods without a reboot when the driver allows it.
10+
11+
[NOTE]
12+
====
13+
This will not work if the upgrade requires a node reboot, for example, when rebuilding `initramfs` files is needed.
14+
====
15+
16+
Use one of the following options for lifecycle management.
17+
18+
[id="kmm-kmod-in-tree-driver_{context}"]
19+
== Treat the kmod as an in-tree driver
20+
21+
Use this method when you want to upgrade the kmods. In this case, treat the kmod as an in-tree driver and create a `Module` in the cluster with the `inTreeRemoval` field to unload the old version of the driver.
22+
23+
Note the following characteristics of treating the kmod as an in-tree driver:
24+
25+
* Downtime might occur as KMM tries to unload and load the kmod on all the selected nodes simultaneously.
26+
* This works if removing the driver makes the node lose connectivity because KMM uses a single pod to unload and load the driver.
27+
28+
[id="kmm-ordered-upgrade_{context}"]
29+
== Use ordered upgrade
30+
31+
You can use ordered upgrade (ordered_upgrade.md) to create a versioned `Module` in the cluster representing the kmods with no effect, because the kmods are already loaded.
32+
33+
Note the following characteristics of using ordered upgrade:
34+
35+
* There is no cluster downtime because you control the pace of the upgrade and how many nodes are upgraded at the same time; therefore, an upgrade with no downtime is possible.
36+
* This method will not work if unloading the driver results in losing connection to the node, because KMM creates two different worker pods for unloading and another for loading. These pods will not be scheduled.

modules/kmm-layering-background.adoc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * updating/preparing_for_updates/kmm-preflight-validation.adoc
4+
5+
:_mod-docs-content-type: CONCEPT
6+
[id="kmm-layering-background_{context}"]
7+
= Layering background
8+
9+
When a Day 0 kmod is installed in the cluster, layering is applied through the Machine Config Operator (MCO) and {product-title} upgrades do not trigger node upgrades.
10+
11+
You only need to recompile the driver if you add new features to it, because the node’s operating system will remain the same.

0 commit comments

Comments
 (0)