Chapter 12. Updating the cluster to RHCOS 10.x
If you have OpenShift Container Platform 5.0 with Red Hat Enterprise Linux CoreOS (RHCOS) version 9.x, you can update the nodes in your cluster to use RHCOS 10.x.
For new installations of OpenShift Container Platform 5.0, RHCOS 10.x is installed by default.
RHCOS is a purpose-designed operating system for use with containers that is deployed by default on all OpenShift Container Platform nodes. Each version of RHCOS is based on a specific version of Red Hat Enterprise Linux (RHEL). RHCOS 10.x is based on RHEL 10.x.
You cannot update the RHCOS version in a cluster that is using the runC container runtime, because runC is deprecated in OpenShift Container Platform 5.0. You must configure your cluster to use the crun container runtime. Starting in OpenShift Container Platform 4.18, crun is the default container runtime for new installations. For more information, see "Configuring the container runtime".
12.1. Updating the nodes in an existing cluster from RHCOS 9.x to RHCOS 10.x Copy linkLink copied to clipboard!
For an existing OpenShift Container Platform 5.0 cluster that is using Red Hat Enterprise Linux CoreOS (RHCOS) 9.x, you can move the nodes to RHCOS 10.x.
Running a cluster with a mixture of RHCOS 9.x and 10.x nodes is not supported. You must move all of your nodes to RHCOS 10.x.
The following procedure shows how to upgrade the nodes in your cluster to run RHCOS 10.x.
Prerequisites
- The boot image in your cluster is at least RHCOS 9.x. Note that the boot image on each node remains at RHCOS 9.x after installing or upgrading to RHCOS 10.x. After you configure RHCOS 10.x in your cluster, new nodes boot using RHCOS 9.x initially and automatically upgrade to RHCOS 10.x. For more information, see "Manually updating the boot image".
- Your cluster is updated to OpenShift Container Platform 5.0.
-
The nodes in your cluster use hardware compatible with RHCOS 10.x. For example,
x86-64-v2CPUs are not compatible with RHCOS 10.x, and must be replaced with newer CPUs before initiating an update to RHCOS 10.x. The nodes in your cluster are configured to use crun as the default container runtime. You cannot update the RHCOS version on nodes that use the runC container runtime, because runC is deprecated in OpenShift Container Platform 5.0. If you attempt to update a machine config pool (MCP) that has runC nodes, the nodes in the pool will degrade and will not update. The MCP status reports the following error:
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfigPool metadata: name: worker # ... status # ... conditions - lastTransitionTime: "2026-09-24T22:42:24Z" message: 'Failed to render configuration for pool worker: MachineConfigPool worker targets a RHEL 10 OS image where runc is not available. To unblock, migrate to crun by removing any ContainerRuntimeConfig that sets defaultRuntime to runc, and removing any MachineConfig that sets default_runtime = "runc" in CRI-O configuration under /etc/crio/crio.conf.d/' reason: "" status: "True" type: RenderDegraded - lastTransitionTime: "2026-09-24T22:42:29Z" message: "" reason: "" status: "True" type: DegradedYou must configure your cluster to use the crun container runtime. For more information, see "Configuring the container runtime".
Procedure
Confirm that your cluster has the RHCOS 10.x stream available by running the following command:
$ oc get osImageStreams/cluster -o yaml | grep rhel-10Example output
- name: rhel-10Update the nodes in your cluster to use RHCOS 10.x by running the following command to edit the
OSImageStreamcustom resource:$ oc patch osimagestream cluster --type merge -p '{"spec":{"defaultStream":"rhel-10"}}'The
spec.defaultStream: rhel-10parameter specifies that new nodes use the image referenced instatus.availableStreams.osImage.name: rhel-10in theOSImageStreamcustom resource.ImportantRunning a cluster with a mixture of RHCOS 9.x and 10.x nodes is not supported. You must move all of your nodes to RHCOS 10.x.
Wait for the pools to finish rolling out the update.
Verification
After the nodes have returned to the
READYstate, check the machine config pool status for the nodes in a machine config pool to view the current RHCOS version by running the following command:$ oc get machineconfigpool -n openshift-machine-config-operator <machine_config_pool_name> -o yamlReplace
<machine_config_pool_name>with the name of a machine config pool.Example output
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfigPool metadata: name: worker # ... status # ... osImageStream: name: rhel-10Examine the
/etc/redhat-releasefile on a node to see the current RHCOS version on that node by running the following command:$ oc debug node/<node_name> -- chroot /host cat /etc/redhat-releaseReplace
<node_name>with the name of the node.Example output
Red Hat Enterprise Linux release 10.2 (Coughlan)Examine the
/etc/os-releasefile on a node to see the current RHCOS version on that node by running the following command:$ oc debug node/<node_name> -- chroot /host cat /etc/os-releaseReplace
<node_name>with the name of the node.Example output
NAME="Red Hat Enterprise Linux CoreOS" VERSION="10.2.20260824-0 (Coughlan)" RELEASE_TYPE=stable ID="rhel" ID_LIKE="centos fedora" VERSION_ID="10.2" PLATFORM_ID="platform:el10" PRETTY_NAME="Red Hat Enterprise Linux CoreOS 10.2.20260824-0 (Coughlan)" # ...