Booting new VMs with Red Hat Enterprise Linux CoreOS (RHCOS) is a critical part of the OpenShift installation process. During installation, the installer provisions the VMs and boots them from an immutable RHCOS image. These nodes then join the cluster and are managed automatically.
OpenShift Boot Process with RHCOS
User runs openshift-install
│
▼
Ignition configuration generated
│
▼
Infrastructure creates new RHCOS VM
│
▼
VM boots immutable RHCOS image
│
▼
Ignition downloads machine config
│
▼
Configure hostname, networking, SSH
│
▼
kubelet service starts
│
▼
kubelet connects to Kubernetes API
│
▼
CSR generated and approved automatically
│
▼
Node joins the OpenShift cluster
│
▼
Machine Config Operator manages the node
Step 1 – Installer Creates Ignition Files
The installer generates three Ignition configurations:
bootstrap.ignmaster.ignworker.ign
Example:
openshift-install create ignition-configs
Each Ignition file tells the node:
- hostname
- SSH keys
- certificates
- kubelet configuration
- pull secret
- networking
- MachineConfig information
Step 2 – VM Boots RHCOS
The VM boots using the Red Hat CoreOS image.
Examples:
- VMware
- KVM
- Hyper-V
- AWS EC2
- Azure VM
- GCP Compute Engine
Unlike traditional Linux:
No kickstartNo cloud-initNo Ansible required
Instead it boots directly into RHCOS.
Step 3 – Ignition Runs (First Boot Only)
During the first boot:
systemd │ ▼Ignition
Ignition configures:
Filesystem
/var/etc
Users
core
SSH Keys
Certificates
Networking
Kubelet configuration
CRI-O configuration
Machine Config
This happens only once.
Step 4 – Immutable Operating System
RHCOS is immutable.
/
is read-only.
Applications never modify the OS.
Instead they use
/var
Only Machine Config Operator changes the OS.
Step 5 – kubelet Starts
Systemd starts:
crio
then
kubelet
Example:
systemctl status kubelet
Output:
Active: active (running)
Step 6 – kubelet Contacts API Server
kubelet connects to
https://api.cluster.example.com:6443
It authenticates using bootstrap credentials.
Step 7 – CSR Created
Each node creates a Certificate Signing Request.
View pending requests:
oc get csr
Example:
csr-abc123 Pendingcsr-def456 Pending
Normally OpenShift approves them automatically.
Approve manually:
oc adm certificate approve csr-abc123
Step 8 – Node Joins Cluster
Check:
oc get nodes
Example:
master-0 Readymaster-1 Readymaster-2 Readyworker-0 Readyworker-1 Ready
Step 9 – Machine Config Operator Takes Over
After joining:
Machine Config Operator
manages:
Kernel arguments
OS updates
Certificates
Kubelet config
CRI-O config
Network files
SSH keys
You never manually patch RHCOS.
What Actually Boots?
RHCOS includes:
Linux KernelsystemdCRI-Okubeletpodmanrpm-ostreeIgnitionNetworkManagerSELinuxOpenShift components
Boot Sequence Inside RHCOS
BIOS / UEFI │ ▼GRUB │ ▼Linux Kernel │ ▼initramfs │ ▼Ignition │ ▼systemd │ ▼NetworkManager │ ▼CRI-O │ ▼kubelet │ ▼API Server │ ▼Node Ready
Troubleshooting RHCOS Boot
View Ignition logs
journalctl -b -u ignition
Check kubelet
journalctl -u kubelet
Check CRI-O
journalctl -u crio
Verify Machine Config
oc get mcp
Healthy output:
NAME UPDATEDmaster Trueworker True
Check Machine Config Daemon
oc get pods -n openshift-machine-config-operator
Check Ignition file retrieval
On the node:
journalctl -b | grep ignition
Check node status
oc describe node worker-0
Interview Answer (2-minute version)
In OpenShift, new VMs boot from an immutable Red Hat CoreOS image rather than a traditional Linux installation. During installation, the
openshift-installutility generates Ignition configuration files for bootstrap, control plane, and worker nodes. On first boot, the Ignition service configures networking, SSH keys, certificates, kubelet, and other system settings. After that,systemdstarts CRI-O and the kubelet, which contacts the Kubernetes API server, generates a certificate signing request (CSR), and joins the cluster once approved. From that point onward, the Machine Config Operator (MCO) manages all operating system configuration and updates usingrpm-ostree, ensuring every RHCOS node remains consistent, immutable, and centrally managed. This design improves security, simplifies lifecycle management, and reduces configuration drift across the cluster.