krn:celum:supervisor:<supervisor>:vm:<vm>.

Permissions at a glance
VMs Celum does not own
Not every VM on a supervisor was created by you. VMs provisioned by Cluster API as nodes of a guest cluster are managed — their lifecycle belongs to the controller that created them. The VM list distinguishes them, and shows the owning cluster and the node’s role (control plane or worker).Power operations
1
Stop
Sets the VM’s
runStrategy to Halted. A graceful shutdown when qemu-guest-agent is connected; without the agent the guest gets no clean shutdown signal.Result: the VM reports Stopped and its VirtualMachineInstance is gone. The VM object stays, which is why a stopped VM keeps its name, its disks and its address.2
Start
Sets
runStrategy to Always. An ephemeral VM starts from the golden every time — everything written during the previous run is gone.Result: a new instance is scheduled and the VM reaches Running.3
Restart
Deletes the running instance and lets KubeVirt’s controller recreate it. Required to pick up a new instance type.Result: the VM comes back on a fresh instance — provided its
runStrategy is Always.Resizing
Changing a VM’s instance type changes its CPU and memory allocation. The change is recorded immediately but takes effect at the next start or restart — KubeVirt resolves the instance type into the running instance only at boot. The response says so explicitly, and the previously pinned revision is cleared so the new class is picked up rather than the old snapshot of it.A VM that appears unchanged after a resize has almost certainly not been restarted yet.
Catalog labels
Catalog labels arekey=value tags that Celum keeps on a VM, so that you can filter and group VMs in Workloads. Celum stores them as one annotation, nuvira.dev/labels, on the VirtualMachine. They are not Kubernetes labels, so network policies, Cilium selectors and the VM’s pod do not see them.
- Dashboard
- API
- MCP
On the VM’s Resources tab, Edit on the Catalog labels card opens Edit catalog labels. Add label adds a row, and the bin removes one. Save labels replaces the whole set. Every row needs a key, and the keys must be unique.
Live migration
Migration moves a running VM to another node without stopping it. Prerequisite: the VM must be migratable. Celum reports that asmigratable, derived from the VM’s eviction strategy — LiveMigrate means yes. Two create-time choices put a VM on the wrong side of it: a ReadWriteOnce image, whose disk cannot be attached on two nodes at once, and networkMode: bridge, which clears the eviction strategy on purpose so an unmigratable VM cannot wedge a node drain. masquerade and passt both migrate.
By default the scheduler picks the destination. You can pin a target node — useful when draining one — and the target is validated against the real node list first, because an invalid node selector does not fail loudly: KubeVirt fills the namespace with pod warnings while the migration never starts.
Result: the migration object is created and the VM moves. That the VM is Running on a new host is a weak check — a restart looks the same. The real proof is that a connection open before the move is still the same connection after it.
A VM with the identity network keeps its identity address across the cutover. That is what the identity network exists for — the pod IP does not survive.
Snapshots
Snapshots capture a point-in-time copy of all of a VM’s volumes, and a restore rolls the VM back to one. With the guest agent connected, the filesystem can be frozen for the snapshot, which is what makes it consistent. Without the agent, you get a crash-consistent copy.Take a snapshot
- Dashboard
- API
- MCP
On the VM’s Disks tab, Take snapshot opens Take VM snapshot with a name already filled in:
<vm>-snapshot-<YYYYMMDD>-<HHMM>, in your browser’s local time. Change it to a name you will recognise, for example before-upgrade, then choose Create snapshot. The VM can keep running. The list refreshes every 15 seconds, and the snapshot is ready when it reaches Succeeded.- The name becomes the name of a
VirtualMachineSnapshotobject in the VM’s namespace. It must therefore be a valid Kubernetes object name (lowercase letters, digits,-and.) and unique among the snapshots in that namespace. Kubernetes refuses any other name, and Celum passes on its message. - A supervisor without KubeVirt’s snapshot API returns
501. - Restore needs the VM stopped. Celum refuses a running VM with
409. A restore rolls back all of the VM’s volumes, and every change since the snapshot is lost.
Clone and move between projects
Kubernetes has no in-place namespace move, so both operations work by copying:1
Disks are cloned
The VM’s disks are cloned into the target namespace.
2
The VM is recreated
The VM is rebuilt there, along with its provisioning secrets and config maps.
3
It is verified running
The copy must come up before the operation is considered successful.
4
For a move, the source is removed
A move then stops and deletes the original. A clone leaves it in place and names the copy
<vm>-copy unless you choose a name.Deleting
Deleting a VM removes the VM object. Disks that were created as part of it go with it; volumes you attached from existing claims are a separate decision — see Storage & disks.Diagnosing a stuck VM
The VM detail page carries an Events tab, which surfaces the Kubernetes events for that VM. When a VM will not start, that is the first place to look — scheduling failures, image pull problems, and PVC binding issues all report there with the underlying reason.Related
Create a VM
The choices made at creation that constrain lifecycle later.
Storage & disks
Volumes, snapshots, and what deletion takes with it.
Networking
What a move leaves behind and how to re-publish.
Permissions
Every
vm:* action and its KRN.Migrate VMs from vSphere
Bring VMs in from vCenter, cold or warm, keeping their addresses.