{"id":790,"date":"2024-08-18T01:40:00","date_gmt":"2024-08-18T01:40:00","guid":{"rendered":"https:\/\/blog.ngocha.biz\/?p=790"},"modified":"2024-08-18T01:40:00","modified_gmt":"2024-08-18T01:40:00","slug":"kubernetes-minikube-tutorial","status":"publish","type":"post","link":"https:\/\/blog.ngocha.biz\/?p=790","title":{"rendered":"How To Install Minikube [Comprehensive Beginner Tutorial]"},"content":{"rendered":"<p>In this Kubernetes Minikube tutorial, I will go through the required steps for a beginner to install Minikube and get started with all the configuration involved.<\/p>\n<p>We have converted everything from installation, and configuration to deploying local development clusters with every configuration you need to deploy and test applications.<\/p>\n<h2 id=\"about-minikube\">About Minikube<\/h2>\n<p><a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/?ref=devopscube.com\">Minikube<\/a> is a lightweight Kubernetes cluster setup you can use to develop and test applications on Kubernetes. You can create single and multi-node clusters with Minikube.<\/p>\n<p>If you want to set up a Kubernetes cluster in your workstation, Minikube is one of the simplest ways to do it. Also, with add-ons, you can extend it for advanced features.<\/p>\n<p>In this guide, we will look at the following.<\/p>\n<h2 id=\"minikube-prerequisites\">Minikube Prerequisites<\/h2>\n<p>The following are the prerequisites for Minikube to work properly.<\/p>\n<ol>\n<li>2 CPUs or more<\/li>\n<li>2GB of free memory<\/li>\n<li>20GB of free disk space<\/li>\n<li>A good Internet connection<\/li>\n<li>Container or virtual machine manager, such as <a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/drivers\/docker\/?ref=devopscube.com\">Docker<\/a>, <a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/drivers\/hyperkit\/?ref=devopscube.com\">Hyperkit<\/a>, <a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/drivers\/hyperv\/?ref=devopscube.com\">Hyper-V<\/a>, <a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/drivers\/kvm2\/?ref=devopscube.com\">KVM<\/a>, <a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/drivers\/parallels\/?ref=devopscube.com\">Parallels<\/a>, <a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/drivers\/podman\/?ref=devopscube.com\">Podman<\/a>, <a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/drivers\/virtualbox\/?ref=devopscube.com\">VirtualBox<\/a>, or <a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/drivers\/vmware\/?ref=devopscube.com\">VMWare<\/a>. Ensure you install any of the tools before you start with Minikube installation.<\/li>\n<\/ol>\n<div class=\"kg-card kg-callout-card kg-callout-card-grey\">\n<div class=\"kg-callout-text\"><b><strong style=\"white-space: pre-wrap;\">Note:<\/strong><\/b> I recommend installing Virtualbox as the backend Minikube driver. It works without any issues.<\/p>\n<p>MAC M1\/M2 users can use Docker Desktop or <a href=\"https:\/\/www.qemu.org\/?ref=devopscube.com\" rel=\"noreferrer noopener\">qemu<\/a> emulator as virtual box have issue with ARM64 processors.<\/div>\n<\/div>\n<h2 id=\"install-minikube\">Install MiniKube<\/h2>\n<p>Minikube installation is very simple. You just need to download the package. It is a single binary that is executable and that is all you need.<\/p>\n<p>First, go to <a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/start\/?ref=devopscube.com\" rel=\"noreferrer noopener\">https:\/\/minikube.sigs.k8s.io\/docs\/start\/<\/a> and select the appropriate OS and other OS-specific parameters. You will get the installation commands for the specific OS as shown below.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-2-19.png\" class=\"kg-image\" alt=\"minikube installtion\" loading=\"lazy\" width=\"782\" height=\"482\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-2-19.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-2-19.png 782w\" sizes=\"auto, (min-width: 720px) 720px\"><figcaption><span style=\"white-space: pre-wrap;\">Click to view in HD<\/span><\/figcaption><\/figure>\n<p>For example, if you have selected MAC binary download, the installation of Minikube is as simple as,<\/p>\n<pre><code>curl -LO https:\/\/storage.googleapis.com\/minikube\/releases\/latest\/minikube-darwin-amd64\nsudo install minikube-darwin-amd64 \/usr\/local\/bin\/minikube<\/code><\/pre>\n<p>Verify installation by checking the minikube version.<\/p>\n<pre><code>minikube version<\/code><\/pre>\n<h2 id=\"start-minikube-with-virtualboxqemudocker\">Start Minikube With Virtualbox\/Qemu\/Docker<\/h2>\n<p>I personally prefer Virtualbox because I use it for other testing purposes using <a href=\"https:\/\/devopscube.com\/vagrant-tutorial-beginners\/\" rel=\"noreferrer noopener\">Vagrant<\/a>.<\/p>\n<p>If you use the <a href=\"https:\/\/devopscube.com\/what-is-docker\/\">Docker<\/a> driver, Nodeport will not work properly.<\/p>\n<p>You can install Virtualbox and start minikube with the Virtualbox driver. There will not be any issue with NodePort services if you use the Virtualbox driver.<\/p>\n<pre><code>minikube start --driver=virtualbox<\/code><\/pre>\n<p>For Docker users,<\/p>\n<pre><code>minikube start -p dev --container-runtime=docker --vm=true<\/code><\/pre>\n<p>For Qemu users.<\/p>\n<pre><code>minikube start --driver=qemu<\/code><\/pre>\n<p>Here we are specifically mentioning &#8211;driver=virtualbox because, by default, it picks the Docker driver if Docker is installed on your system. If you don&#8217;t have Docker and only Virtualbox, minikube picks the Virtualbox driver by default.<\/p>\n<p>If you want to install a specific kubernetes version, use the version flag as shown below.<\/p>\n<pre><code>minikube start --kubernetes-version=1.31.0 --driver=virtualbox<\/code><\/pre>\n<p>If you are running for the first time, Minikube will download the base VM image to deploy kubernetes on Virtualbox. It will take a couple of minutes for minikube to start. On successful execution, you will see the following messages.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-3-22.png\" class=\"kg-image\" alt=\"starting minikube with virtualbox driver\" loading=\"lazy\" width=\"876\" height=\"529\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-3-22.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-3-22.png 876w\" sizes=\"auto, (min-width: 720px) 720px\"><figcaption><span style=\"white-space: pre-wrap;\">Click to view in HD<\/span><\/figcaption><\/figure>\n<p>To verify, execute the following status command.<\/p>\n<pre><code>minikube status<\/code><\/pre>\n<p>You should see the following output.<\/p>\n<pre><code>minikube\ntype: Control Plane\nhost: Running\nkubelet: Running\napiserver: Running\nkubeconfig: Configured<\/code><\/pre>\n<p>You can have multiple minikube clusters using profiles. I have covered profiles towards the end of the article.<\/p>\n<h2 id=\"minikube-reference-manifests\">Minikube Reference Manifests<\/h2>\n<p>All the <a href=\"https:\/\/devopscube.com\/create-kubernetes-yaml\/\">Kubernetes manifests<\/a> used in this guide are <a href=\"https:\/\/github.com\/scriptcamp\/minikube.git?ref=devopscube.com\" rel=\"noreferrer noopener\">hosted on Github<\/a>. You can clone the repo and use it or directly deploy it using the URL given in the guide below.<\/p>\n<pre><code>git clone https:\/\/github.com\/techiescamp\/minikube<\/code><\/pre>\n<h2 id=\"deploy-application-on-minikube\">Deploy Application on Minikube<\/h2>\n<p>First, let&#8217;s deploy a sample Nginx app. Here is what that manifest contains.<\/p>\n<ol>\n<li>A configmap with custom nginx html<\/li>\n<li>Nginx deployment<\/li>\n<li>Service with 32000 nodeport<\/li>\n<\/ol>\n<div class=\"kg-card kg-callout-card kg-callout-card-grey\">\n<div class=\"kg-callout-text\"><b><strong style=\"white-space: pre-wrap;\">Note:<\/strong><\/b> Please ensure you have kubectl installed. If not, follow the <a href=\"https:\/\/kubernetes.io\/docs\/tasks\/tools\/?ref=devopscube.com\" rel=\"noreferrer noopener\">Kubectl installtion guide<\/a><\/div>\n<\/div>\n<p>Let&#8217;s deploy the manifest using the direct git raw URL. It gets deployed in the default namespace.<\/p>\n<pre><code>kubectl apply -f https:\/\/raw.githubusercontent.com\/scriptcamp\/minikube\/main\/nginx.yaml<\/code><\/pre>\n<p>Get the deployment status<\/p>\n<pre><code>kubectl get deployments<\/code><\/pre>\n<p>Get the service. You should be able to see the <code>nginx-service<\/code><\/p>\n<pre><code>kubectl get service<\/code><\/pre>\n<h2 id=\"getting-minikube-ip-service-endpoints\">Getting Minikube IP &amp; Service Endpoints<\/h2>\n<p>To get the node IP of minikube, execute the following command. You can use the IP to access nodePorts.<\/p>\n<pre><code>minikube ip<\/code><\/pre>\n<p>For example,<\/p>\n<pre><code>http:\/\/192.168.99.100:32000<\/code><\/pre>\n<p>You can also get the service endpoint directly using the following minikube command.<\/p>\n<pre><code>minikube service list<\/code><\/pre>\n<p>To get the URL of a specific service,<\/p>\n<pre><code>minikube service --url &lt;service-name&gt;<\/code><\/pre>\n<h2 id=\"access-nodeport-on-minikube\">Access Nodeport on Minikube<\/h2>\n<p>With minikube, you can get the service endpoint with the NodePort directly using the service name. Execute the following command to get the full-service URL with the assigned NodePort. Here nginx-service is the service name of nginx<\/p>\n<pre><code>minikube service nginx-service --url<\/code><\/pre>\n<h2 id=\"create-persistent-volume-on-minikube\">Create Persistent Volume on Minikube<\/h2>\n<p>You can create Persistent volume in your minikube cluster. If any of the applications need persistent volume, you can use the host path type.<\/p>\n<p>Here is an example.<\/p>\n<pre><code>apiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: pv0001\nspec:\n  accessModes:\n    - ReadWriteOnce\n  capacity:\n    storage: 5Gi\n  hostPath:\n    path: \/data\/pv0001\/<\/code><\/pre>\n<p>You can try creating a persistent volume using the GitHub manifest directly.<\/p>\n<pre><code>kubectl apply -f https:\/\/github.com\/scriptcamp\/minikube\/edit\/main\/pv.yaml<\/code><\/pre>\n<pre><code>kubectl get pv<\/code><\/pre>\n<h2 id=\"create-dynamic-volumes-on-minikube\">Create Dynamic Volumes on Minikube<\/h2>\n<p>When you install Minikube, a default storage class named standard is created for dynamic provisioning. Dynamic volume provisioning is primarily required when you deploy Statefulset apps.<\/p>\n<p>Minikube uses <strong>provisioner:k8s.io\/minikube-hostpath<\/strong> provisioner for the dynamic persistent volume. Which actually creates a mount under the hostpath.<\/p>\n<p>Here is a PVC manifest example that you can use with minikube.<\/p>\n<pre><code>kind: PersistentVolumeClaim\napiVersion: v1\nmetadata:\n  name: dynamic-volume\nspec:\n  accessModes:\n    - ReadWriteOnce\n  resources:\n    requests:\n      storage: 1Gi<\/code><\/pre>\n<p>Let&#8217;s try creating the PVC using the manifest directly from the Github file.<\/p>\n<pre><code>kubectl apply -f https:\/\/raw.githubusercontent.com\/scriptcamp\/minikube\/main\/pvc.yaml<\/code><\/pre>\n<p>List the pvc<\/p>\n<pre><code>kubectl get pvc<\/code><\/pre>\n<p>You can check the <a href=\"https:\/\/devopscube.com\/deploy-postgresql-statefulset\/\" rel=\"noreferrer noopener\">kubernetes postgreSQL statefulset<\/a> guide to deploy Statefulsets on Minikube.<\/p>\n<h2 id=\"minikube-addons\">Minikube Addons<\/h2>\n<p>There are some advanced Kubernetes features that are available as minikube addons. For example, the Kubernetes dashboard &amp; metrics server do not come default with the Minikube installation. But it is available as a minikube addon. Also, if you want to add a custom docker registry to minikube, you have to install the <code>registry-creds<\/code> addon and configure it.<\/p>\n<p>By default, only the storage class add-ons get installed.<\/p>\n<p>You can list all the available add-ons using the following command.<\/p>\n<pre><code>minikube addons list<\/code><\/pre>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-4-17.png\" class=\"kg-image\" alt=\"minikube addons list\" loading=\"lazy\" width=\"518\" height=\"695\"><\/figure>\n<p>You can enable an addon from the list using the enable flag.<\/p>\n<p>For example, I am going to enable two add-ons. Kubernetes dashboard and the kubernetes metrics server.<\/p>\n<pre><code>minikube addons enable dashboard\nminikube addons enable metrics-server<\/code><\/pre>\n<h2 id=\"access-minikube-kubernetes-dashboard\">Access Minikube Kubernetes Dashboard<\/h2>\n<p>Once the dashboard addon is enabled you can access the Kubernetes dashboard using the minikube command.<\/p>\n<p>The following command will open the Kubernetes dashboard directly in the browser.<\/p>\n<pre><code>minikube dashboard<\/code><\/pre>\n<p>If you just want the dashboard URL, execute the following command. It will start the proxy and displays the Kubernetes dashboard URL in the output.<\/p>\n<pre><code>minikube dashboard --url<\/code><\/pre>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-5-26.png\" class=\"kg-image\" alt=\"minikube dashboard url output\" loading=\"lazy\" width=\"569\" height=\"158\"><\/figure>\n<p>You can access the dashboard from the browser as shown below.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-6-17.png\" class=\"kg-image\" alt=\"minikube kubernetes dashboard\" loading=\"lazy\" width=\"1562\" height=\"730\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-6-17.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w1000\/2025\/03\/image-6-17.png 1000w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-6-17.png 1562w\" sizes=\"auto, (min-width: 720px) 720px\"><figcaption><span style=\"white-space: pre-wrap;\">Click to view in HD<\/span><\/figcaption><\/figure>\n<h2 id=\"minikube-custom-cpu-memory\">Minikube Custom CPU &amp; Memory<\/h2>\n<p>By default, Minukube assigns 2 vCPU and 2048 memory. Oftentimes we need extra CPU and memory than the default values set by minikube. To override default CPU and memory limits, you can explicitly specify the custom CPU and memory limits as shown below.<\/p>\n<pre><code>minikube start --driver=virtualbox --memory 3000 --cpus 2<\/code><\/pre>\n<p>If you want to change the CPU and memory of the existing minikube, execute the following commands with custom CPU and memory values.<\/p>\n<p>minikube stop minikube config set memory 2500 minikube config set cpus 2 minikube start<\/p>\n<div class=\"kg-card kg-callout-card kg-callout-card-grey\">\n<div class=\"kg-callout-text\"><b><strong style=\"white-space: pre-wrap;\">Note:<\/strong><\/b> It does not work with all the drivers. Few drivers like Virturalbox needs a delete before increasing CPU and memory.<\/div>\n<\/div>\n<h2 id=\"running-multiple-minikube-clusters-using-profiles\">Running Multiple Minikube Clusters using Profiles<\/h2>\n<p>You can have multiple minikube cluster instances in your workstation using minikube profiles. For example, you might want to run two different versions of the Kubernetes cluster in your stations.<\/p>\n<p>To create a cluster with a profile, you just need to create the clusters with a profile flag and a profile name.<\/p>\n<p>For example, the following command creates a minikube cluster with the profile name <code>dev<\/code>.<\/p>\n<pre><code>minikube start -p dev<\/code><\/pre>\n<p>You can list all the profiles using the list command.<\/p>\n<pre><code>minikube profile list<\/code><\/pre>\n<p>You should get an output with all the minikube profiles with information like node IP, driver, runtime, status, etc.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-8-21.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"784\" height=\"125\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-8-21.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-8-21.png 784w\" sizes=\"auto, (min-width: 720px) 720px\"><figcaption><span style=\"white-space: pre-wrap;\">Click to view in HD<\/span><\/figcaption><\/figure>\n<p>You can delete a minikube profile using the following command. It deletes all the configurations related to the profile.<\/p>\n<pre><code>minikube delete -p stage<\/code><\/pre>\n<h3 id=\"switch-between-minikube-profiles\">Switch Between Minikube Profiles<\/h3>\n<p>If you have multiple active minikube profiles, you can switch between profiles or set the default profile using the minikube command.<\/p>\n<p>For example, to <strong>switch to the dev<\/strong> profile, execute the following command. It automatically switched the kubectl context to the dev cluster.<\/p>\n<pre><code>minikube profile dev<\/code><\/pre>\n<p>To determine the current profile, just run the following command.<\/p>\n<pre><code>minikube profile<\/code><\/pre>\n<p>If you don&#8217;t set up a profile, you might get the following error.<\/p>\n<pre><code>Profile \"minikube\" not found. Run \"minikube profile list\" to view all profiles<\/code><\/pre>\n<p>Either you can set the profile or pass the profile flag with all minikube commands.<\/p>\n<p>For example,<\/p>\n<pre><code>minikube service list -p dev<\/code><\/pre>\n<h2 id=\"running-multi-node-minikube-cluster\">Running Multi-Node Minikube Cluster<\/h2>\n<p>You can run a multi-node cluster with Minkube. All you have to do is pass a <code>--nodes <\/code>flag with the required number of nodes.<\/p>\n<p>For example, to start a 2-node minikube cluster,<\/p>\n<pre><code>minikube start --nodes 2 <\/code><\/pre>\n<p>You can check the node status using the following command.<\/p>\n<pre><code>minikube status<\/code><\/pre>\n<h2 id=\"access-minikube-nodes-ssh\">Access Minikube Nodes (SSH)<\/h2>\n<p>If you want to access the minikube node for checking <a href=\"https:\/\/devopscube.com\/kubernetes-cluster-configurations\/\">Kubernetes configurations<\/a> or for rebuffing purposes, you can ssh into the node using the following command.<\/p>\n<pre><code>minikube ssh <\/code><\/pre>\n<p>To open any files inside the node, use <code>sudo<\/code>.<\/p>\n<p>If you have multiple minikube nodes, you can use the specific node to ssh. First, you need to list the available nodes using kubectl.<\/p>\n<pre><code>kubectl get nodes<\/code><\/pre>\n<p>Then use the node name as follows.<\/p>\n<pre><code>minikube ssh -n worker-01<\/code><\/pre>\n<h2 id=\"upgrade-minikube\">Upgrade Minikube<\/h2>\n<p>To upgrade Minikube, first check the version to be updated using the following command.<\/p>\n<pre><code>minikube update-check<\/code><\/pre>\n<p>If there is a latest version available you can upgrade the version in the same way you installed it.<\/p>\n<h3 id=\"for-mac-homebrew\">For MAC (Homebrew)<\/h3>\n<p>Update brew and upgrade minukube.<\/p>\n<pre><code>brew update\nbrew upgrade minikube<\/code><\/pre>\n<h3 id=\"for-linux\">For Linux<\/h3>\n<pre><code>curl -LO https:\/\/storage.googleapis.com\/minikube\/releases\/latest\/minikube-linux-amd64\nsudo install minikube-linux-amd64 \/usr\/local\/bin\/minikube<\/code><\/pre>\n<p>Finally check the updated version using the following command.<\/p>\n<pre><code>minikube version<\/code><\/pre>\n<h2 id=\"enable-feature-gates-in-minikube\">Enable Feature Gates in Minikube<\/h2>\n<p>If you want to try out alpha and beta features added to new Kubernetes versions, you can use the feature gates option with Minikube.<\/p>\n<p>For example, there is a feature gate called <strong><code>SidecarContainers<\/code><\/strong> and to enable it, when you install Minikube<\/p>\n<pre><code>minikube start -p test --kubernetes-version=v1.31.0 --feature-gates=SidecarContainers=true<\/code><\/pre>\n<p>You can check the list of all the available <a href=\"https:\/\/kubernetes.io\/docs\/reference\/command-line-tools-reference\/feature-gates\/?ref=devopscube.com\" rel=\"noreferrer noopener\">Feature Gates Here<\/a>.<\/p>\n<h2 id=\"minikube-alternatives\">Minikube Alternatives<\/h2>\n<p>Following are some of the open-source minikube alternatives to have a local kubernetes setup. Do give it a try.<\/p>\n<ol>\n<li>Kind: <a href=\"https:\/\/kind.sigs.k8s.io\/?ref=devopscube.com\">https:\/\/kind.sigs.k8s.io<\/a>\/<\/li>\n<li>k3s: <a href=\"https:\/\/github.com\/k3s-io\/k3s?ref=devopscube.com\">https:\/\/github.com\/k3s-io\/k3s<\/a><\/li>\n<li>Autok3s: <a href=\"https:\/\/github.com\/cnrancher\/autok3s?ref=devopscube.com\">https:\/\/github.com\/cnrancher\/autok3s<\/a><\/li>\n<li>K0s: <a href=\"https:\/\/github.com\/k0sproject\/k0s?ref=devopscube.com\">https:\/\/github.com\/k0sproject\/k0s<\/a><\/li>\n<li>MicroK8s: <a href=\"https:\/\/github.com\/ubuntu\/microk8s?ref=devopscube.com\">https:\/\/github.com\/ubuntu\/microk8s<\/a><\/li>\n<\/ol>\n<p>But only Minkube has support options to work with Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMWare.<\/p>\n<h2 id=\"possible-errors\">Possible Errors<\/h2>\n<p>The following error primarly occurs in Mac systems. Instead of VMware based backend, you can use Docker Desktop.<\/p>\n<pre><code>Exiting due to DRV_UNSUPPORTED_OS: The driver 'vmware' is not supported on darwin\/arm64<\/code><\/pre>\n<h2 id=\"minikube-faqs\">Minikube FAQs<\/h2>\n<h3 id=\"what-is-minikube-used-for\">What is minikube used for?<\/h3>\n<p>Minikube is a local kubernetes setup primarily used for development and testing purposes. It is a lightweight setup that works with tools like Docker, Virtualbox, etc.<\/p>\n<h3 id=\"how-do-i-view-the-minikube-dashboard\">How do I view the minikube dashboard?<\/h3>\n<p>To access the minikube dashboard, you need to enable the minikube dashboard addon. Then you can access the dashboard from the browser using the minikube command.<\/p>\n<h3 id=\"how-do-i-deploy-an-application-in-minikube\">How do I deploy an application in minikube?<\/h3>\n<p>You can deploy applications in minikube using kubectl like you deploy applications in any Kubernetes cluster.<\/p>\n<h3 id=\"can-minikube-have-multiple-clusters-in-a-single-workstation\">Can Minikube have multiple clusters in a single workstation?<\/h3>\n<p>Yes. Using minikube profiles, you can run multiple instances of minikube cluster instances in a single workstation.<\/p>\n<h3 id=\"how-to-use-a-custom-docker-registry-with-minikube\">How to use a custom Docker registry with Minikube? <\/h3>\n<p>If you are on a corporate network, you might have to use a private docker registry with minikube. To use a custom private docker registry, you should install the registry-creds Minikube addon and configure the registry details.<\/p>\n<h2 id=\"conclusion\">Conclusion<\/h2>\n<p>In this kubernetes minikube tutorial, I have covered the minikube installation and configuration setup steps to deploy an application and access it.<\/p>\n<p>I will keep updating this tutorial with the required functionalities of minikube that you can use for your local development and testing.<\/p>\n<p>If you are preparing for <a href=\"https:\/\/devopscube.com\/best-kubernetes-certifications\/\">Kubernetes Certifications<\/a>, you can check out the <a href=\"https:\/\/devopscube.com\/setup-kubernetes-cluster-kubeadm\/\">Kubeadm cluster setup<\/a> guide. It is a multi-node setup where you get a production-like experience.<\/p>\n<hr>\n<p><strong>Ngu\u1ed3n:<\/strong> <a href=\"https:\/\/devopscube.com\/kubernetes-minikube-tutorial\/\" target=\"_blank\" rel=\"noopener noreferrer\">How To Install Minikube [Comprehensive Beginner Tutorial] \u2014 DevOpsCube<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Source: https:\/\/devopscube.com\/kubernetes-minikube-tutorial\/<\/p>\n","protected":false},"author":1,"featured_media":791,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-790","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops"],"_links":{"self":[{"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=\/wp\/v2\/posts\/790","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=790"}],"version-history":[{"count":0,"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=\/wp\/v2\/posts\/790\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=\/wp\/v2\/media\/791"}],"wp:attachment":[{"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=790"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=790"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}