Operations
Day-2 operations for vMetal center on managing BareMetalHost resources on the control plane cluster. This page covers adding and removing servers, checking fleet capacity, and where to find guidance for other common tasks.
Set your namespace once. Every command on this page updates automatically.
Adding servers
A physical server joins the pool by creating a BareMetalHost resource and a Secret containing its BMC credentials. Both must live in the NodeProvider's namespace on the control plane cluster.
apiVersion: v1
kind: Secret
metadata:
name: server-01-bmc
namespace: <namespace>
type: Opaque
stringData:
username: admin
password: <bmc-password>
---
apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
name: server-01
namespace: <namespace>
labels:
role: compute
spec:
bmc:
address: redfish://192.168.1.100
credentialsName: server-01-bmc
bootMACAddress: "aa:bb:cc:dd:ee:01"
kubectl apply -f server.yaml
For the full set of BareMetalHost fields and bulk registration, see Configuration.
After creation, the BMO begins registration immediately. The server moves through registering → inspecting → available automatically. Inspection collects hardware inventory and typically takes a few minutes. The server is not eligible for provisioning until it reaches available.
Verify a server is ready
kubectl get baremetalhost server-01 -n my-metal3-namespace \
-o jsonpath='{.status.provisioning.state}'
A response of available means the server is ready to claim. See Troubleshooting if the server stalls in registering or inspecting.
Check hardware details
After inspection, the BMH records the server's hardware inventory:
kubectl get baremetalhost server-01 -n my-metal3-namespace \
-o jsonpath='{.status.hardwareDetails}' | jq .
This includes CPU count, memory, NIC information, and disk inventory. Verify it matches the expected hardware before the server is provisioned into production.
Removing servers
Permanent removal
If a Machine holds the server, delete it from the vCluster Platform UI or API first. The platform deprovisions the server and returns it to available. Then delete the BareMetalHost:
kubectl delete baremetalhost server-01 -n my-metal3-namespace
The platform detects the deletion on its next reconcile and marks the associated NodeClaim as failed. The IP address is released.
Also delete the BMC credential Secret if it is no longer needed:
kubectl delete secret server-01-bmc -n my-metal3-namespace
If you delete a provisioned BareMetalHost directly without first deleting the Machine, the platform marks the NodeClaim as failed on the next reconcile. The server does not go through the normal deprovisioning cycle, so the disk is not cleaned before physical removal.
Temporarily withhold a server
To prevent a server from being claimed for new Machines without removing it from the cluster, add a label that no node type selector matches:
kubectl label baremetalhost server-01 -n <namespace> maintenance=true
Label changes do not affect servers that are already provisioned. A server already claimed by a Machine remains claimed until that Machine is deleted.
Remove the label to return the server to the eligible pool:
kubectl label baremetalhost server-01 -n <namespace> maintenance-
Checking fleet capacity
Get a view of all servers and their current states:
kubectl get baremetalhost -n my-metal3-namespace \
-o custom-columns='NAME:.metadata.name,STATE:.status.provisioning.state,ERROR:.status.errorMessage'
Count available servers:
kubectl get baremetalhost -n my-metal3-namespace -o json | \
jq '[.items[] | select(.status.provisioning.state=="available")] | length'
A server in available is ready for a new Machine request. A server in provisioning or provisioned is claimed. A server in error needs attention before it can be used again. See Troubleshooting for how to resolve error states.
Other day-2 tasks
| Task | Where to find it |
|---|---|
| Rotate BMC credentials | Production and Security |
| Update OS images across a fleet | GPU Fleet Operations |
| Update server labels | GPU Fleet Operations |
| Expand the IP address pool | Troubleshooting |