explaingit

kubevirt/kubevirt

6,850GoAudience · ops devopsComplexity · 5/5LicenseSetup · hard

TLDR

KubeVirt extends Kubernetes to run traditional virtual machines alongside containers, letting you create, start, stop, and manage VMs using the same kubectl tools and YAML files you already use.

Mindmap

mindmap
  root((repo))
    What it does
      VMs on Kubernetes
      First-class VM resources
    How it works
      Custom resource types
      Cluster controller
      Linux KVM backend
    VM lifecycle
      Create and start
      Stop and delete
      Schedule to nodes
    Users
      Cluster operators
      Contributors
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Run legacy software that requires a full virtual machine on a Kubernetes cluster without separate VM infrastructure.

USE CASE 2

Manage virtual machines using kubectl and standard Kubernetes YAML manifests alongside existing container workloads.

USE CASE 3

Consolidate VM and container workloads onto a single Kubernetes cluster to reduce infrastructure overhead.

USE CASE 4

Provide strong tenant isolation using hardware-level virtual machines on shared Kubernetes nodes.

Tech stack

GoKubernetesLinux KVM

Getting it running

Difficulty · hard Time to first run · 1day+

Requires a Kubernetes cluster with hardware virtualization support on nodes, nested virtualization works for testing but is not production-grade.

Use freely in commercial and open source projects, attribution required in distributions but no copyleft obligation.

In plain English

KubeVirt is an add-on for Kubernetes that makes it possible to create and manage traditional virtual machines alongside the containers that Kubernetes normally runs. Without KubeVirt, Kubernetes only knows how to schedule containers. With KubeVirt installed, the cluster also understands virtual machines as a first-class resource type. Kubernetes is a system for running applications packaged in containers across a cluster of machines. It manages scheduling, restarts, and scaling automatically. Containers are lightweight and fast, but some workloads still need full virtual machines, either for compatibility with older software, specific hardware access, or stronger isolation between tenants. KubeVirt bridges that gap by teaching Kubernetes to handle both. Under the hood, KubeVirt adds new resource definitions to Kubernetes so that a virtual machine can be declared the same way any other Kubernetes object is declared, using a configuration file. Once declared, operators on the cluster can create, start, stop, schedule, and delete virtual machines using the same tools and workflows already used for containers. The actual machine virtualization relies on existing Linux virtualization infrastructure rather than reinventing it. The project provides documentation for both end users who want to run virtual machines on an existing Kubernetes cluster and for developers who want to contribute to or extend KubeVirt itself. Architecture and component breakdowns are available in the repository's docs folder. KubeVirt is an active open source project released under the Apache License 2.0. It has a community presence on Twitter, Slack, and a Google Group, and publishes a release schedule along with compatibility notes for different versions of Kubernetes.

Copy-paste prompts

Prompt 1
Write a KubeVirt VirtualMachine YAML manifest that creates an Ubuntu VM on my Kubernetes cluster with 2 CPUs and 2GB of memory.
Prompt 2
Help me install KubeVirt on a local Minikube cluster so I can experiment with running virtual machines alongside containers.
Prompt 3
Show me how to use the virtctl CLI to connect to the serial console of a running KubeVirt virtual machine.
Prompt 4
Explain how KubeVirt scheduling interacts with Kubernetes node affinity rules when I need to pin VMs to nodes with specific hardware.
Prompt 5
Write a Kubernetes operator that automatically creates KubeVirt VirtualMachine objects from a custom resource definition I define.
Open on GitHub → Explain another repo

← kubevirt on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.