A self-contained lab environment on a laptop using Docker and kind to practice KubeVirt virtual machine management and Rancher multi-cluster management, with explicitly documented and verified platform limitations.

Stars

6

7-day growth

No data

Forks

0

Open issues

2

License

No data

Last updated

2026-07-28

AI repository intelligence
FR-AI / ANALYSIS

Why it is worth attention

It transparently documents the platform-specific failures (e.g., Apple Silicon cannot boot VMs) and provides workarounds, making it an honest learning tool rather than a polished demo.

Who it is for

  • Kubernetes operators exploring VM workloads
  • Developers learning KubeVirt and Rancher
  • Students or trainers in cloud-native virtualization
  • DevOps engineers evaluating multi-cluster management on laptops

Use cases

  • Learning KubeVirt CRDs, live migration, and CDI storage on a local cluster
  • Practicing Rancher cluster import and multi-cluster management
  • Testing VM networking, day-2 operations, and troubleshooting in a constrained environment
  • Verifying cross-platform behavior of KubeVirt (especially on Apple Silicon)

Strengths

  • Provides step-by-step labs with verifiable checkpoints and troubleshooting tables
  • Automates the entire setup (kind, KubeVirt, CDI, Rancher) via Makefile targets
  • Documents all known limits and gives workarounds (e.g., MTU fix, custom containerdisk)
  • Verified on Apple Silicon (M1 Pro) with detailed platform support matrix

Considerations

  • Guest VMs cannot boot on Apple Silicon without nested virt (M1/M2) or Colima (M3+)
  • Storage is limited to local-path (RWO, no CSI snapshotter, migration pinning)
  • No Multus or real L2 networking; no LoadBalancer (NodePort only)
  • First run is slow (~25 minutes, ~2 GB images) and requires minimum 4 CPU / 8 GiB RAM

README quick start

kubevirt-kind-lab

Practise KubeVirt (running virtual machines on Kubernetes) and Rancher (multi-cluster management) on a laptop — entirely in Docker, with every platform limitation documented and verified rather than glossed over.

Guests don't boot on Apple Silicon. The KubeVirt control plane, CDI, storage and all of Rancher work; the final QEMU boot of a VM does not, because KubeVirt requires host-passthrough on Arm64 and macOS gives containers no /dev/kvm. Full diagnosis and three fixes: docs/booting-real-vms.md. See Platform support before you start.

ContentsWhat you'll learn · Platform support · Prerequisites · Start here · Architecture · The labs · Everyday commands · Layout · Known limits · Versions

What you'll learn

  • How KubeVirt turns a VM into a pod — virt-operator/api/controller/handler, and how a CRD compiles down to libvirt domain XML
  • Why ordinary Services, DNS and NetworkPolicy work unchanged against a VM
  • How CDI imports a cloud image into a PVC, and when a disk is ephemeral vs persistent
  • Day-2 operations: live migration, disk hot-plug, snapshots, and drain-as-migration
  • How Rancher actually attaches to a cluster — the agent dials out, which is why server-url is the setting people get wrong

Platform support

HostControl plane · CDI · RancherGuest VMs boot?
Linux x86_64 with /dev/kvm✅ full speed — the best target
Linux x86_64, no KVM✅ works, 10–30× slower (QEMU TCG)
macOS Apple Silicon (M1/M2)verified❌ hardware limit — why
macOS Apple Silicon (M3+)✅ via Colima + nested virt
Windows / WSL2untested — #2untested

Verified on Apple M1 Pro / macOS 15.3.1 / Docker Desktop 29.4.1: kind + KubeVirt v1.8.4 reach Deployed, CDI v1.65.0 imports Fedora 42 into a PVC in ~3 min, and Rancher v2.12.3 imports the cluster to state active.

The scripts probe /dev/kvm on the Docker daemon's host, not on the machine you're typing on — so docker context use then make virt

Description

Practise KubeVirt (VMs on Kubernetes) and Rancher locally on kind — with every platform limitation documented and verified.

Related repositories

Similar projects matched by category, topics, and programming language.

programmersd21
Featured
programmersd21 GitHub avatar

flow

flow is a minimalist terminal dashboard that displays real-time network throughput with smooth animations, multiple responsive modes, and zero configuration.

Developer ToolsCLI & Terminal
277
S40911120
Featured
S40911120 GitHub avatar

recensa

Recensa is a self-hosted web viewer that indexes Claude Code session transcripts into a local SQLite database, enabling full-text search, replay, and audit of all past agent conversations without uploading data anywhere.

AI & Machine LearningLarge Language Models
67
jamesob
Featured
jamesob GitHub avatar

local-llm

A comprehensive guide for building and configuring a high-end local machine to run state-of-the-art LLMs, with detailed hardware choices, BIOS tuning, and Docker-based model serving.

AI & Machine LearningLarge Language Models
1,660