Trending keywords: security, cloud, container,
Want to test Kubernetes without the effort of setting up a complex, production-grade cluster? If so, Minikube is a great solution. This tool provides an easy means of creating a local Kubernetes environment on any Linux, Mac, or Windows system, where you can experiment with and test Kubernetes deployments.
Keep reading for an overview of how Minikube works, how to install it, and tips on when you should and shouldn’t use it.
What Is Minikube?
Minikube is a tool that sets up a Kubernetes environment on a local PC or laptop. It’s technically a Kubernetes distribution, but because it addresses a different type of use case than most other distributions (like Rancher, OpenShift, and EKS), it’s more common to hear folks refer to it as a tool rather than a distribution.
Minikube supports all of the major operating systems – Windows, Linux, and macOS. (It doesn’t run on mobile devices, alas.)
Minikube vs. Kubernetes
Minikube is a version of Kubernetes, so it doesn’t really make sense to think of them as being binary opposites. However, there are important differences between Minikube and most other versions of Kubernetes, as summarized in this chart:
|Minikube||Most other Kubernetes distros|
|Supported operating systems||Linux, Windows, macOS||Linux (Windows can host worker nodes)|
|Cluster size by default||Single-node||Multi-node|
|Can it be deployed in the cloud?||Not really (theoretically possible, but this is not a supported use case)||Yes|
|Available as a managed service?||No||Yes (for many distributions)|
|Storage handling||On local directories inside the Minikube machine (by default)||Using the Container Storage Interface, or CSI (in most cases)|
How Does Minikube Work?
Minikube works by setting up a Kubernetes cluster on a local machine. By default, it creates a one-node cluster, but as we explain below, you can create a multi-node cluster with a Minikube environment if desired.
- Inside a Docker container.
- Inside a virtual machine. Several VM platforms are supported, such as VirtualBox, KVM, Hyper-V, and Parallels, depending on which host operating system you use.
- Directly on bare metal, if your host OS supports it.
The drivers available for your installation depend on which system you are using to run Minikube. You can only use Hyper-V VMs on Windows, for example, because Hyper-V only supports Windows. Likewise, the bare-metal driver option is only supported on Linux, since Kubernetes master nodes can run natively only on a Linux system.
Which driver to choose depends on what level of performance and isolation you want from Minikube. You’ll get the best performance if you deploy Minikube on bare metal. You’ll get the next-best level of performance if you deploy it inside a container. Deploying in a VM gives you the lowest level of performance, with the upside being that your Minikube environment will be rigidly isolated from the host system.
How To Install Minikube
The way you install Minikube depends on which operating system you are using to host it and which driver option you select. In most cases, however, installing and starting Minikube is as simple as using an installer or downloading an installer script and running it on your system.
Installing on Linux
On most Linux systems, you can install Minikube with:
Most major Linux distributions also offer RPM or Debian packages for installing Minikube.
Installing on Windows
The easiest way to install Minikube on Windows is to download and run the installer. You can also use PowerShell to set it up, if desired, by downloading a binary:
New - Item - Path 'c:\' -Name ' minikube ' -ItemType Directory -Force Invoke - WebRequest - OutFile 'c:\minikube\minikube.exe' - Uri 'https://github.com/kubernetes/minikube/releases/latest/download/minikube-windows-amd64.exe' - UseBasicParsingCode language: PHP (php)
Installing on macOS
On a Mac, install Minikube with:
You can also install Minikube via Homebrew.
How Do You Use Minikube?
Once Minikube is installed, start it with the following simple command:
You can then interact with your cluster using standard kubectl commands prefixed with the minikube command. For example:
minikube kubectl cluster-info
Alternatively, you can SSH into the Minikube node and run kubectl directly from there.
The Minikube Dashboard
Like most distributions, Minikube supports the native Web-based Kubernetes dashboard, but it’s not enabled by default. To enable the dashboard, run:
This command will also open a page in your default Web browser showing the Kubernetes dashboard.
Managing Ingress for Minikube
By default, Minikube doesn’t provide an ingress controller. For basic experimentation with Kubernetes features, ingress isn’t really necessary; you can use Minikube to practice things like creating pods without having ingress set up.
However, ingress becomes necessary in most cases if you want to test how real-world applications might behave, because ingress helps you simulate the networking conditions that those applications would experience when running in a production cluster.
Fortunately, Minikube provides addons that make it easy to install an ingress controller. You can do this with a simple command:
minikube addons enable ingress
This creates an NGINX-based ingress controller for your Minikube environment.
Minikube doesn’t support complex ingress configurations. You’ll need a full-fledged complex Kubernetes distribution for testing advanced networking setups. But for basic application testing, Minikube and its NGINX ingress addon should suffice.
As noted above, Minikube runs a single-node Kubernetes cluster by default. If you want to experiment with managing multiple nodes inside Kubernetes, you may wish to set up a multi-node cluster instead.
You can do this easily enough by using the –nodes flag when you start Minikube. For example, to create a cluster with two nodes, run:
minikube start --nodes 2 -p multinode-demo
Minikube isn’t the only way to set up a lightweight container environment on a local system. MicroK8s, K3s, and Docker Desktop offer similar functionality to Minikube, but with some important differences.
|Supports Kubernetes?||Yes||Yes||Yes||Yes (but not by default)|
|Multi-node cluster support||Available, but not a major focus||Fully supported||Fully supported||Possible, but requires extensions beyond core product|
|Main development supporter||Kubernetes project||Canonical||Rancher||Docker|
Of all these options, Minikube is arguably one of the simplest tools to set up and deploy. Minikube’s driver-style deployment mode also provides a great deal of flexibility with regard to how you actually run your cluster. On the other hand, Minikube doesn’t support as many advanced configuration options as alternatives like K3s.
When – And When Not – To Use Minikube
Whether Minikube is the right option for you depends on several factors.
The first and most important factor is whether you need to run a production Kubernetes cluster, or you just want to experiment with this technology. In the former case, Minikube is not a good choice. Although in theory there is nothing stopping you from setting up on a server and hosting real-world applications with it, Minikube is not intended for hosting production-grade workloads. It’s for testing and experimentation.
This is true, by the way, even if you aren’t ready to set up a production cluster yet, but doing so is your ultimate goal. If you want to learn to manage production-grade clusters, a simpler way to get on the right path may be to use a hosted sandbox environment of a full-fledged Kubernetes distribution, like OpenShift or Rancher. Because these environments are hosted in the cloud, they are about as easy (or perhaps even easier) to set up as Minikube, but they provide access to a complete set of production features, making it easy to migrate from a testing environment to a production environment.
In contrast, with Minikube, it’s never going to be practical to take the experimental cluster that you set up on your local machine and turn it into a production-grade environment. You’d have to start from scratch with a different Kubernetes distribution to get into production.
A second question to consider is whether you want a multi-node cluster. While it’s possible to set up multiple nodes with Minikube, Minikube’s focus is more on getting a single-node cluster set up easily and quickly than it is on helping you experiment with complex, multi-node clusters.
Likewise, while Minikube supports basic ingress configurations, its options are limited. If you need complex ingress – or complex networking in general – Minikube is not the best choice.
With a very easy setup process, flexible deployment options, and support for all the major operating systems, Minikube provides a convenient and user-friendly tool to help you experiment with Kubernetes. It’s not anything approaching a production-grade Kubernetes distribution, but it’s great for folks just getting started with containers and Kubernetes.