1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 12:46:18 +01:00
Files
openshift-docs/modules/installation-special-config-rtkernel.adoc
2025-10-15 18:41:41 +00:00

129 lines
4.0 KiB
Plaintext

// Module included in the following assemblies:
//
// * installing/install_config/installing-customizing.adoc
:_mod-docs-content-type: PROCEDURE
[id="installation-special-config-rtkernel_{context}"]
= Adding a real-time kernel to nodes (during installation)
Some {product-title} workloads require a high degree of determinism.
While Linux is not a real-time operating system, the Linux real-time
kernel includes a preemptive scheduler that provides the operating
system with real-time characteristics.
If your {product-title} workloads require these real-time characteristics,
you can set up your compute (worker) and/or control plane machines to use the
Linux real-time kernel when you first install the cluster. To do this,
create a `MachineConfig` object and inject that object into the set of manifest
files used by Ignition during cluster setup, as described in the following
procedure.
[NOTE]
====
This procedure is fully supported with bare metal installations using
systems that are certified for Red Hat Enterprise Linux for Real Time 8.
Real time support in {product-title} is also limited to specific subscriptions.
This procedure is also supported for use with Google Cloud Platform.
====
.Prerequisites
* For a bare metal installation of {product-title}, prepare masters and workers.
* Use {product-title} version 4.4 or later.
.Procedure
. Create the `intall-config.yaml` file using the installer or prepare it manually.
To create it using installer, run:
+
[source,terminal]
----
$ ./openshift-install create install-config --dir <installation_directory>
----
. Generate the Kubernetes manifests for the cluster:
+
[source,terminal]
----
$ ./openshift-install create manifests --dir <installation_directory>
----
. Decide if you want to add the real-time kernel to worker or control plane nodes.
. In the `openshift` directory, create a file (for example,
`99-worker-realtime.yaml`) to define a `MachineConfig` object that applies a
real-time kernel to the selected nodes (worker nodes in this case):
+
[source,terminal]
----
$ cat << EOF > 99-worker-realtime.yaml
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
labels:
machineconfiguration.openshift.io/role: "worker"
name: 99-worker-realtime
spec:
kernelType: realtime
EOF
----
+
You can change `worker` to `master` to add kernel arguments to control plane nodes instead.
Create a separate YAML file to add to both master and worker nodes.
. Create the cluster. You can now continue on to create the {product-title} cluster.
+
[source,terminal]
----
$ ./openshift-install create cluster --dir <installation_directory>
----
. Check the real-time kernel: Once the cluster comes up, log in to the cluster
and run the following commands to make sure that the real-time kernel has
replaced the regular kernel for the set of worker or control plane nodes you
configured:
+
[source,terminal]
----
$ oc get nodes
----
+
.Example output
[source,terminal]
----
NAME STATUS ROLES AGE VERSION
ip-10-0-139-200.us-east-2.compute.internal Ready master 111m v1.33.4
ip-10-0-143-147.us-east-2.compute.internal Ready worker 103m v1.33.4
ip-10-0-146-92.us-east-2.compute.internal Ready worker 101m v1.33.4
ip-10-0-156-255.us-east-2.compute.internal Ready master 111m v1.33.4
ip-10-0-164-74.us-east-2.compute.internal Ready master 111m v1.33.4
ip-10-0-169-2.us-east-2.compute.internal Ready worker 102m v1.33.4
----
+
[source,terminal]
----
$ oc debug node/ip-10-0-143-147.us-east-2.compute.internal
----
+
.Example output
[source,terminal]
----
Starting pod/ip-10-0-143-147us-east-2computeinternal-debug ...
To use host binaries, run `chroot /host`
----
+
[source,terminal]
----
sh-4.4# uname -a
----
+
.Example output
[source,terminal]
----
Linux <worker_node> 4.20.0-147.3.1.rt24.96.el8_1.x86_64 #1 SMP PREEMPT RT
Wed Nov 27 18:29:55 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
----
+
The kernel name contains `rt` and text `PREEMPT RT` indicates that this is a
real-time kernel.