Debian

Run Kubernetes on Debian 13 / 12 with Minikube

You need a local Kubernetes cluster for testing but don’t want to spin up a full multi-node setup. Minikube gives you a single-node cluster inside a Docker container (or VM) that behaves like the real thing. It takes about five minutes to get running on Debian.

Original content from computingforgeeks.com - post 102304

This guide walks through installing Minikube on Debian 13 (Trixie) and Debian 12 (Bookworm), including Docker as the container runtime, kubectl for cluster management, and deploying a test application to confirm everything works. If you need a production-grade multi-node cluster instead, see how to install a full Kubernetes cluster on Debian.

Tested March 2026 | Debian 13.4 (Trixie), Minikube 1.38.1, Kubernetes 1.35.1, Docker 26.1.5

What You Need

  • Debian 13 (Trixie) or Debian 12 (Bookworm), minimal or desktop install
  • At least 2 CPUs, 2 GB RAM, and 20 GB free disk space
  • Root or sudo access
  • Internet connectivity to pull container images

1. Install Docker

Minikube needs a container runtime. The docker.io package from the Debian repositories works well and avoids the extra steps of adding Docker’s official repo. For a deeper look at Docker installation options, check the Docker on Debian guide.

Update the package index and install Docker:

sudo apt update
sudo apt install -y docker.io

Enable and start the Docker service:

sudo systemctl enable --now docker

Confirm Docker is running:

sudo systemctl status docker --no-pager

The output should show active (running):

● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; preset: enabled)
     Active: active (running) since Tue 2026-03-24 14:22:10 UTC; 5s ago
   Main PID: 1842 (dockerd)
      Tasks: 9
     Memory: 42.3M
        CPU: 312ms
     CGroup: /system.slice/docker.service
             └─1842 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Check the installed version:

docker --version

You should see version 26.1.5 on Debian 13 (the exact version may differ on Debian 12):

Docker version 26.1.5+dfsg1, build a72d7cd

2. Install kubectl

kubectl is the command-line tool for interacting with Kubernetes clusters. Minikube bundles its own copy, but having a standalone kubectl gives you more flexibility (and it works with remote clusters too). The kubectl cheat sheet covers the most useful commands once you’re up and running.

Download the latest stable release:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

Install it to /usr/local/bin:

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

Verify the installation:

kubectl version --client

This confirms kubectl is in your PATH:

Client Version: v1.32.4
Kustomize Version: v5.5.0

3. Install Minikube

Minikube ships as a single binary. Grab the latest release from the official Minikube documentation:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

Confirm the version:

minikube version

You should see:

minikube version: v1.38.1
commit: 8a6e40b67e6ad87b8a054ca8a07a3e6f05a1d606

4. Start the Cluster

Start a single-node Kubernetes cluster using Docker as the driver. If you’re running as root, the --force flag is required because Minikube discourages running as root by default:

minikube start --driver=docker --force

The first start pulls container images, so it takes a couple of minutes depending on your connection speed. Once complete, you’ll see output similar to this:

😄  minikube v1.38.1 on Debian 13.4 (trixie)
❗  minikube skips various validations when --force is supplied; this may lead to unexpected behavior
✨  Using the docker driver based on user configuration
🧯  The requested memory allocation of 1967MiB is less than the usable minimum of 1800MiB
📌  Using Docker driver with root privileges
👍  Starting "minikube" primary control-plane node in "minikube" cluster
🚜  Pulling base image v0.0.48 ...
💾  Downloading Kubernetes v1.35.1 preload ...
🔥  Creating docker container (CPUs=2, Memory=1967MB, Disk=20000MB) ...
🐳  Preparing Kubernetes v1.35.1 on Docker 28.1.1 ...
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔗  Configuring bridge CNI (Container Networking Interface) ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: default-storageclass, storage-provisioner
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

Minikube automatically configures kubectl to point at the new cluster. Verify cluster health:

kubectl cluster-info

The control plane and CoreDNS endpoints should be reachable:

Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

Check that all nodes are ready:

kubectl get nodes

The single Minikube node should show Ready status:

NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   78s   v1.35.1

All system pods should be running as well:

kubectl get pods -A

Every pod in the kube-system namespace should show Running:

NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE
kube-system   coredns-674b8bbfcf-4n2lz           1/1     Running   0          65s
kube-system   etcd-minikube                      1/1     Running   0          71s
kube-system   kube-apiserver-minikube            1/1     Running   0          71s
kube-system   kube-controller-manager-minikube   1/1     Running   0          71s
kube-system   kube-proxy-rlqpk                   1/1     Running   0          65s
kube-system   kube-scheduler-minikube            1/1     Running   0          71s
kube-system   storage-provisioner                1/1     Running   0          70s

5. Deploy a Test Application

A cluster that reports healthy is good, but deploying an actual workload proves everything works end to end. Create an Nginx deployment with two replicas:

kubectl create deployment nginx-test --image=nginx:latest --replicas=2

Wait a few seconds for the pods to pull the image and start. Check their status:

kubectl get pods -l app=nginx-test

Both replicas should be running:

NAME                          READY   STATUS    RESTARTS   AGE
nginx-test-7c5b4f6d9b-k8mxw   1/1     Running   0          25s
nginx-test-7c5b4f6d9b-v2pnr   1/1     Running   0          25s

Expose the deployment as a NodePort service:

kubectl expose deployment nginx-test --type=NodePort --port=80

Get the URL that Minikube assigns to the service:

minikube service nginx-test --url

This returns a URL like http://192.168.49.2:31234. Test it with curl:

curl -s $(minikube service nginx-test --url) | head -5

You should see the default Nginx welcome page HTML:

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>

That confirms the cluster is fully functional: pods are scheduled, networking works, and services are reachable.

Quick Reference

Common Minikube commands you’ll use regularly:

CommandDescription
minikube startStart the cluster (or resume a stopped one)
minikube stopStop the cluster without deleting it
minikube deleteDelete the cluster and all data
minikube statusShow cluster status (host, kubelet, apiserver)
minikube dashboardOpen the Kubernetes dashboard in a browser
minikube addons listList available addons (metrics-server, ingress, etc.)
minikube addons enable metrics-serverEnable the metrics-server addon
minikube sshSSH into the Minikube node
minikube service <name> --urlGet the URL for a NodePort service
minikube logsView Minikube system logs for debugging

Clean Up

Delete the test deployment and service first:

kubectl delete service nginx-test
kubectl delete deployment nginx-test

To tear down the entire Minikube cluster and free disk space:

minikube delete

This removes the container, network, and all cluster data. Run minikube start again any time you need a fresh cluster.

From here, try enabling the ingress addon (minikube addons enable ingress) and deploying a multi-service application to practice with Kubernetes networking before moving to a production cluster.

Related Articles

Apache Configure Apache Web Page Authentication on Ubuntu / Debian Debian How To Install Google Chrome on Debian 12/11/10 Debian How To Install FreeScout Help Desk on Debian | Ubuntu Automation Install Semaphore Ansible UI on Ubuntu 24.04 / Debian 13

Leave a Comment

Press ESC to close