Containers

Run Kubernetes on Debian 13 with Minikube

Minikube is an open-source tool that runs a single-node Kubernetes cluster on your local machine. It is designed for developers and system administrators who want to test Kubernetes workloads, learn cluster operations, or validate configurations without provisioning a full multi-node cluster.

This guide covers how to install and run Minikube on Debian 13 (Trixie) using the Docker driver. We will install Docker, kubectl, and Minikube, then start a cluster, deploy a test application, access the Kubernetes dashboard, and manage cluster lifecycle. All commands are tested against Minikube v1.38.1 with Kubernetes v1.35.1.

Prerequisites

  • A server or workstation running Debian 13 (Trixie) with at least 2 CPUs, 2GB RAM, and 20GB free disk space
  • A non-root user with sudo privileges
  • Internet connectivity for downloading packages and container images

Step 1: Install Docker on Debian 13

Minikube supports multiple drivers including Docker, KVM, and VirtualBox. The Docker driver is the default and recommended option because it requires no hypervisor and runs containers directly. If you need a full guide on installing Docker and Docker Compose on Debian, follow our dedicated article.

Start by updating the package index and installing prerequisite packages.

sudo apt update
sudo apt install -y ca-certificates curl gnupg

Add Docker’s official GPG key and repository.

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Add the Docker repository to your Apt sources.

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Install Docker Engine.

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Add your user to the docker group so Minikube can use Docker without sudo.

sudo usermod -aG docker $USER
newgrp docker

Verify Docker is running.

$ docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

Step 2: Install kubectl on Debian 13

kubectl is the command-line tool for interacting with Kubernetes clusters. You need it to create deployments, inspect pods, and manage services. For a full list of commands and shortcuts, check the kubectl cheat sheet for Kubernetes admins.

Download the latest stable kubectl binary.

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

Install kubectl to the system path.

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

Verify the installation.

$ kubectl version --client
Client Version: v1.35.1
Kustomize Version: v5.6.0

Step 3: Install Minikube on Debian 13

Download the latest Minikube binary from the official releases page.

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

Install the binary to /usr/local/bin/.

sudo install minikube-linux-amd64 /usr/local/bin/minikube

Confirm Minikube is installed.

$ minikube version
minikube version: v1.38.1
commit: bc18bf608397e1b923768e55e4a17bae2ce67e06

Step 4: Start a Minikube Kubernetes Cluster

Start a single-node Kubernetes cluster using the Docker driver. This is the default driver, so no --driver flag is required.

minikube start

Expected output:

* minikube v1.38.1 on Debian 13
* Automatically selected the docker driver
* Using Docker driver with root privileges
* Starting "minikube" primary control-plane node in "minikube" cluster
* Pulling base image v0.0.46 ...
* Downloading Kubernetes v1.35.1 preload ...
* Creating docker container (CPUs=2, Memory=2200MB) ...
* Preparing Kubernetes v1.35.1 on Docker 27.x ...
  - 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

Verify the cluster is running.

$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

Check cluster information with kubectl.

$ kubectl cluster-info
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

List nodes in the cluster.

$ kubectl get nodes
NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   60s   v1.35.1

Step 5: Deploy a Test Application

Create an Nginx deployment to verify the cluster works end to end.

kubectl create deployment webserver --image=nginx

Wait a few seconds for the pod to start, then check its status.

$ kubectl get pods
NAME                         READY   STATUS    RESTARTS   AGE
webserver-559b886555-xk7pq   1/1     Running   0          30s

Expose the deployment as a NodePort service so it is accessible from outside the cluster.

kubectl expose deployment webserver --type=NodePort --port=80

Check the assigned port.

$ kubectl get service webserver
NAME        TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
webserver   NodePort   10.96.128.105   <none>        80:31245/TCP   10s

Use Minikube to generate the full service URL and open it.

$ minikube service webserver --url
http://192.168.49.2:31245

Test the service with curl.

$ curl -s $(minikube service webserver --url) | head -5
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>

Scale the Deployment

Scale the webserver deployment to 3 replicas.

kubectl scale deployment webserver --replicas=3

Verify all replicas are running.

$ kubectl get pods
NAME                         READY   STATUS    RESTARTS   AGE
webserver-559b886555-xk7pq   1/1     Running   0          2m
webserver-559b886555-ab3cd   1/1     Running   0          15s
webserver-559b886555-ef4gh   1/1     Running   0          15s

Step 6: Access the Minikube Kubernetes Dashboard

Minikube ships with the Kubernetes Dashboard addon. Launch it with one command.

minikube dashboard

This enables the dashboard addon if not already active, starts a proxy, and opens the dashboard in your default browser. If you are on a headless server, use the --url flag instead to get the URL without opening a browser.

$ minikube dashboard --url
* Enabling dashboard ...
  - Using image docker.io/kubernetesui/dashboard
  - Using image docker.io/kubernetesui/metrics-scraper
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
http://127.0.0.1:38725/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

If you need remote access to the dashboard, forward the port through SSH.

ssh -L 38725:127.0.0.1:38725 user@your-debian-server

Then open http://127.0.0.1:38725/... in your local browser.

Step 7: Stop, Delete, and Manage the Cluster

Stop the cluster without deleting it. This preserves all deployed workloads and configuration.

minikube stop

Start it again later with minikube start and everything resumes where you left off.

Delete the cluster and all associated data when you no longer need it.

minikube delete

To delete all Minikube profiles and clusters at once.

minikube delete --all

Useful Minikube Commands

CommandDescription
minikube startStart or resume the cluster
minikube stopStop the cluster without deleting
minikube deleteDelete the cluster and all data
minikube statusShow cluster component status
minikube dashboardOpen the Kubernetes web dashboard
minikube sshSSH into the Minikube node
minikube addons listList available addons and their status
minikube service <name> --urlGet the URL for a service

Clean up the test deployment and service before stopping the cluster.

kubectl delete service webserver
kubectl delete deployment webserver

Verify everything is cleaned up.

$ kubectl get pods,svc
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   10m

Conclusion

We installed Docker, kubectl, and Minikube on Debian 13, started a single-node Kubernetes cluster, deployed an Nginx test application, and accessed the Kubernetes dashboard. Minikube is a practical tool for local development and testing – when you are ready for production multi-node clusters, consider deploying Kubernetes with Rancher or setting up a cluster with kubeadm.

Related Articles

Containers Perform security checks on Kubernetes using Datree Openshift Display Logs of OpenShift Nodes from oc CLI Debian Install Zoom Client on Debian 12 / Debian 11 Containers Send Logs to Splunk on Kubernetes using Splunk Forwarder

Press ESC to close