Desktop Kubernetes is a Linux Bash CLI that provisions a Kubernetes cluster right on your desktop using KVM or VirtualBox - with each cluster node consisting of a guest VM running any of: Alma, CentOS, or Rocky Linux. The goal is to create a local development and testing environment that is 100% compatible with a production-grade Kubernetes environment.
Desktop Kubernetes is the 57 Chevy of Kubernetes distros: you can take it apart and put it back together with just a few Linux console tools: bash
, curl
, ssh
, scp
, tar
, openssl
, helm
, yq
, kvm tools (virsh
, virt-install
, qemu-img
), and kubectl
. That being said, v1.33.1 of this distribution is Kubernetes Certified. See: CNCF Landscape.
This project started as a way to automate the steps in Kelsey Hightower's Kubernetes The Hard Way - just to see if I could. But at this point I pretty much rely on it for all my local Kubernetes development. I use it on a couple of different Ubuntu 24.04.X systems with 64 gigs of RAM and 6+ hyper-threaded processors.
The dtk
script in the repo root is the Desktop Kubernetes CLI.
The first time, run with just the --check-compatibility
option to check the installed versions of the tools used by Desktop Kubernetes (curl, etc.) against the tested versions. E.g.:
./dtk --check-compatibility
There will likely be differences and you have to decide whether the differences are material. Slight version differences may not matter, but for sure you need all the listed tools. In keeping with the project philosophy of not modifying your desktop - you need to install the tools listed in order to use this project. Desktop Kubernetes will not alter your desktop.
See the full documentation (link below) to know which tools are specific to KVM vs VirtualBox.
The dtk
script in the repo root is what you run. If you supply no arguments, the script will use KVM to provision and configure a cluster based on the config.yaml
file in the repo root resulting in a three node Alma Linux cluster consisting of one controller and two workers.
Once the cluster comes up, the script will display a message telling you how to set your KUBECONFIG
environment variable to access the cluster. It will also display a message showing how to SSH into each node. (There's also a helper script sshto
that you can use for that.)
Please see https://aceeric.github.io/desktop-kubernetes for the full documentation.