Skip to content

Getting Started ​

Verified against release v1.8.4. Commands assume a running Kubernetes cluster and kubectl configured against it.

Prerequisites ​

  • A Kubernetes cluster you can reach with kubectl.
  • Nodes with hardware virtualization available. Where it is not (for example nested or emulated environments), the KubeVirt CR needs a software emulation setting.
  • The virtctl CLI, obtained from the matching GitHub release.

Install ​

The install entry point is virt-operator: apply the operator manifest, then a KubeVirt custom resource that tells the operator to deploy the rest (docs/getting-started.md, docs/updates.md).

bash
export RELEASE=v1.8.4
kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-operator.yaml
kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-cr.yaml

A first working setup ​

  1. Wait for the operator to deploy the control plane and report the install as available.

    bash
    kubectl -n kubevirt wait kv kubevirt --for condition=Available --timeout=10m
  2. If your nodes lack hardware virtualization, enable software emulation on the KubeVirt CR before the previous step completes.

    bash
    kubectl -n kubevirt patch kubevirt kubevirt --type=merge \
      -p '{"spec":{"configuration":{"developerConfiguration":{"useEmulation":true}}}}'
  3. Once the install is Available, create a VirtualMachine and start it with virtctl.

    bash
    virtctl start <vm-name>

Verify it works ​

Confirm the KubeVirt install is healthy and the components are running.

bash
kubectl -n kubevirt get kv kubevirt -o=jsonpath='{.status.phase}'
kubectl -n kubevirt get pods

A healthy install reports phase Deployed and shows virt-api, virt-controller, and virt-handler Pods running. After starting a VM, kubectl get vmi shows the instance and virtctl console <vm-name> attaches to its serial console.

Where to go next ​

For production concerns such as upgrades, high availability, storage with CDI, and live migration, see the official KubeVirt documentation and the repository's docs/updates.md for the supported update flow.