Skip to content

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

### Node Resource Usage

```bash copy
kubectl top nodes


VM Status

List All Running VM Instances

```bash copy kubectl get vmi -n virtual-machines -o wide

### List All VM Definitions

```bash copy
kubectl get vm -n virtual-machines

Detailed VM Status

```bash copy kubectl get vm -n virtual-machines -o yaml

### VM Instance Conditions

```bash copy
kubectl get vmi <vm-name> -n virtual-machines -o jsonpath='{.status.conditions}' | jq .

Active Migrations

```bash copy kubectl get vmim -n virtual-machines

### Migration History

```bash copy
kubectl get vmim -n virtual-machines -o wide

Check for Outdated Launchers

```bash copy kubectl get vmi -l kubevirt.io/outdatedLauncherImage --all-namespaces

---

## Storage

### PVCs in VM Namespace

```bash copy
kubectl get pvc -n virtual-machines

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

### Services in VM Namespace

```bash copy
kubectl get svc -n virtual-machines

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

### KubeVirt CR Status

```bash copy
kubectl get kubevirt -n kubevirt -o yaml

CDI Components

```bash copy kubectl get pods -n cdi

### CDI Config

```bash copy
kubectl get cdi -o yaml


Forklift

Forklift Pods

```bash copy kubectl get pods -n konveyor-forklift

### Providers

```bash copy
kubectl get providers -n konveyor-forklift

Migration Plans

```bash copy kubectl get plans -n konveyor-forklift

### Active Migrations

```bash copy
kubectl get migrations -n konveyor-forklift -o wide

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

### CDI Importer Logs

```bash copy
kubectl logs -n cdi -l app=containerized-data-importer -f

Forklift Controller Logs

```bash copy kubectl logs -n konveyor-forklift -l app=forklift-controller -f

### Forklift Validation Logs

```bash copy
kubectl logs -n konveyor-forklift -l app=forklift-validation -f