Pausing and Resuming a Virtual Machine

Pausing a virtual machine freezes its CPU and memory state without releasing resources or losing data — the workload is paused until you resume it. Use it to temporarily yield host scheduling or to freeze a virtual machine for inspection and forensics.

Pause and resume act on the virtual machine instance through the KubeVirt pause / unpause subresources (subresources.kubevirt.io/v1); they do not add any CRD.

Notes

  • Pause applies to a Running virtual machine; Resume applies to a Paused one.
  • Pausing does not release CPU/memory and does not lose the in-memory state — the guest workload is simply paused.
  • Pausing is a disruptive action (the workload is interrupted until you resume), so the console asks for confirmation. Resuming is a safe action and takes effect directly, without confirmation.
  • Permission: requires the update verb on virtualmachineinstances.

Pause a virtual machine

Use virtctl, which issues an empty-body PUT to the virtual machine instance's pause subresource:

virtctl pause vm web-01 -n demo

The underlying request is:

PUT /apis/subresources.kubevirt.io/v1/namespaces/demo/virtualmachineinstances/web-01/pause

After it succeeds, the virtual machine instance carries the condition Paused=True (reason PausedByUser) and VirtualMachine.status.printableStatus becomes Paused. Pausing an already-paused virtual machine returns 409 Conflict.

Resume a virtual machine

virtctl unpause vm web-01 -n demo

The underlying request is:

PUT /apis/subresources.kubevirt.io/v1/namespaces/demo/virtualmachineinstances/web-01/unpause

VirtualMachine.status.printableStatus returns to Running. Resuming a virtual machine that is not paused returns 409 Conflict.