Diagnostic Commands
Quick reference for troubleshooting the KubeVirt/VMO environment.
Cluster Health
Node Status
```bash copy kubectl get nodes -o wide
### All Pods in Error/CrashLoop State
```bash copy
kubectl get pods --all-namespaces --field-selector status.phase!=Running,status.phase!=Succeeded
Recent Cluster Events
```bash copy kubectl get events --all-namespaces --sort-by='.lastTimestamp' | tail -50
VM Status
List All Running VM Instances
```bash copy kubectl get vmi -n virtual-machines -o wide
Detailed VM Status
```bash copy
kubectl get vm
Active Migrations
```bash copy kubectl get vmim -n virtual-machines
Check for Outdated Launchers
```bash copy kubectl get vmi -l kubevirt.io/outdatedLauncherImage --all-namespaces
DataVolumes
```bash copy kubectl get dv -n virtual-machines
### DataVolume Import Progress
```bash copy
kubectl get dv -n virtual-machines -o custom-columns=NAME:.metadata.name,PHASE:.status.phase,PROGRESS:.status.progress
Portworx Cluster Status
```bash copy PX_POD=$(kubectl get pods -l name=portworx -n portworx -o jsonpath='{.items[0].metadata.name}') && \ kubectl exec $PX_POD -n portworx -- /opt/pwx/bin/pxctl status
### Portworx Volume List
```bash copy
PX_POD=$(kubectl get pods -l name=portworx -n portworx -o jsonpath='{.items[0].metadata.name}') && \
kubectl exec $PX_POD -n portworx -- /opt/pwx/bin/pxctl volume list
Portworx Alerts
```bash copy PX_POD=$(kubectl get pods -l name=portworx -n portworx -o jsonpath='{.items[0].metadata.name}') && \ kubectl exec $PX_POD -n portworx -- /opt/pwx/bin/pxctl alerts show
---
## Networking
### Network Attachment Definitions
```bash copy
kubectl get net-attach-def --all-namespaces
NAD Details
```bash copy kubectl get net-attach-def vlan-13 -n default -o yaml
Endpoints
```bash copy kubectl get endpoints -n virtual-machines
### VMI Network Interfaces
```bash copy
kubectl get vmi <vm-name> -n virtual-machines -o jsonpath='{.status.interfaces}' | jq .
KubeVirt Components
virt-handler (DaemonSet - runs on every node)
```bash copy kubectl get pods -n kubevirt -l kubevirt.io=virt-handler -o wide
### virt-controller
```bash copy
kubectl get pods -n kubevirt -l kubevirt.io=virt-controller -o wide
virt-api
```bash copy kubectl get pods -n kubevirt -l kubevirt.io=virt-api -o wide
CDI Components
```bash copy kubectl get pods -n cdi
Forklift
Forklift Pods
```bash copy kubectl get pods -n konveyor-forklift
Migration Plans
```bash copy kubectl get plans -n konveyor-forklift
Provider Inventory Status
```bash copy kubectl get providers -n konveyor-forklift -o jsonpath='{range .items[]}{.metadata.name}{"\t"}{.status.conditions[].type}{"\t"}{.status.conditions[*].status}{"\n"}{end}'
---
## Log Collection
### virt-handler Logs (specific node)
```bash copy
kubectl logs -n kubevirt -l kubevirt.io=virt-handler --field-selector spec.nodeName=<node-name> -f
virt-controller Logs
```bash copy kubectl logs -n kubevirt -l kubevirt.io=virt-controller -f
### virt-launcher Logs (specific VM)
```bash copy
kubectl logs -n virtual-machines -l vm.kubevirt.io/name=<vm-name> -f
Portworx Logs
```bash copy kubectl logs -n portworx -l name=portworx --tail=100
Forklift Controller Logs
```bash copy kubectl logs -n konveyor-forklift -l app=forklift-controller -f