Troubleshooting

Troubleshoot agent-forge-operator reconciliation

AgentMachine demand is not observed

Check AgentMachines in the hosted control plane namespace:

kubectl -n demo-demo get agentmachines.capi-provider.agent-install.openshift.io -o yaml
kubectl -n demo get vsphereagentpool demo-worker \
  -o jsonpath='{.status.conditions[?(@.type=="AgentMachineDemandFound")]}{"\n"}'

Confirm that the AgentMachine has the expected hypershift.openshift.io/nodePool annotation and reports Ready=False with Reason=NoSuitableAgents.

InfraEnv ISO is unavailable

kubectl -n demo get infraenv demo -o yaml
kubectl -n demo get vsphereagentpool demo-worker \
  -o jsonpath='{.status.conditions[?(@.type=="InfraEnvAvailable")]}{"\n"}'

The operator cannot create bootable discovery VMs until status.isoDownloadURL is populated on the InfraEnv.

No Agents match

kubectl -n demo get agents -o yaml
kubectl -n demo get vsphereagentpool demo-worker -o jsonpath='{.status.matchingAgents}{"\n"}'

Compare Agent labels with spec.agent.labels on the VsphereAgentPool. Labels should also match the NodePool Agent selector.

VM identity does not match the Agent

kubectl -n demo get vsphereagentpool demo-worker \
  -o jsonpath='{range .status.ownedVMs[*]}{.name}{"\t"}{.biosUUID}{"\t"}{.macAddress}{"\t"}{.agentRef.name}{"\n"}{end}'

kubectl -n demo get agents.agent-install.openshift.io \
  -o custom-columns=NAME:.metadata.name,HOST:.spec.hostname,BIOS:.status.inventory.systemVendor.serialNumber,MAC:.status.inventory.interfaces[0].macAddress

The VM name in status.ownedVMs[*].name should match the Agent spec.hostname. The BIOS UUID and MAC address should describe the same vSphere VM.

vSphere errors

kubectl -n demo describe vsphereagentpool demo-worker
kubectl -n agent-forge-operator-system logs deploy/agent-forge-operator-controller-manager -c manager

Confirm the vSphere Secret keys, datacenter, datastore cluster, ISO datastore, resource pool, folder, and network values.