Skip to main content

BareMetalHost States

BareMetalHost resources move through a defined set of lifecycle states as vMetal provisions and manages physical servers. See Architecture for how the states fit into the overall provisioning flow.

Modify the following with your specific values to replace them across the whole page:

Lifecycle states

BareMetalHost Lifecycle StatesregisteringBMC credential checkinspectingHW inventory scanavailableReady for provisioningIn the poolclaimprovisioningPXE boot + OS installprovisionedRunning configured OSJoined K8s clusterdeprovisioningCleaning + restorereleasecleanederrorManual investigationWhat Happens at Each StageRegistering + InspectingServer added to Ironic databaseBMC credentials verifiedCPU, RAM, NICs, disks, GPUsfirmware, PCIe devices scannedAvailable (Pool)Server ready for claimingMatched by Node Type labelsCost calculation determinescheapest matching typeProvisioningIronic powers on via BMCPXE boot with IPA agentOS image written to diskcloud-init config appliedProvisioned + RunningOS booted from diskRegistration scripts executedNode joined target vClusterGPUs available for workloadsFull cycle: Available -> Provisioned -> Deprovisioned -> Available (ready for next tenant)Each physical server = one BareMetalHost CR in Kuberneteskubectl get baremetalhost -n metal3-system
Click to enlarge

Check all servers in a namespace:

kubectl get baremetalhost -n my-metal3-namespace \
-o custom-columns='NAME:.metadata.name,STATE:.status.provisioning.state,ERROR:.status.errorMessage'

Two abbreviations appear throughout: BMC (Baseboard Management Controller) and BMO (Bare Metal Operator). BMC is the server's out-of-band management interface. BMO is the Metal3 provisioning controller.

StateDescriptionCommon failure causes
registeringBMC verification and Ironic registration.BMC unreachable; wrong BMC address or credentials.
inspectingHardware inventory collection by IPA ramdisk.DHCP server not deployed or unreachable; wrong boot MAC; no DHCP response; IPA ramdisk download failure.
availableReady to claim.n/a
provisioningOS image write and cloud-init configuration.Image URL unreachable from the server; checksum mismatch; wrong rootDeviceHint.
provisionedRunning the configured OS.Node join can still fail if cloud-init or networking are misconfigured.
deprovisioningDisk cleaning before returning to the pool.Cleaning step times out; BMC unreachable; cleaning ramdisk cannot reach Ironic or DHCP proxy.
errorA failure occurred.See the status.errorMessage field.

Status fields

For more detail on a specific server:

kubectl describe baremetalhost my-baremetalhost-name -n my-metal3-namespace
FieldWhere to find itWhat it tells you
Status.Provisioning.Statekubectl describe or kubectl get bmh -o yamlThe current lifecycle state.
Status.ErrorMessageStatus section in describe outputThe last error from the BMO or Ironic.
Status.ErrorCountStatus sectionHow many consecutive errors have occurred. A high count means repeated retries.
Status.GoodCredentialsStatus sectionWhether BMC credentials have been validated successfully.
Status.HardwareDetailsStatus sectionHardware inventory populated after inspecting. Empty here means inspection never completed.
Status.OperationHistorykubectl get bmh -o yamlTimestamps for recent inspect and provision operations. An empty end field means the operation is still in progress.