Minikube

Follow these instructions to prepare minikube for Istio installation with sufficient resources to run Istio and some basic applications.

Prerequisites

Installation steps

  1. Install the latest version of minikube and a minikube hypervisor driver.

  2. If you’re not using the default driver, set your minikube hypervisor driver.

    For example, if you installed the KVM hypervisor, set the driver within the minikube configuration using the following command:

    1. $ minikube config set driver kvm2
  3. Start minikube with 16384 MB of memory and 4 CPUs. This example uses Kubernetes version 1.18.10. You can change the version to any Kubernetes version supported by Istio by altering the --kubernetes-version value:

    1. $ minikube start --memory=16384 --cpus=4 --kubernetes-version=v1.20.2

    Depending on the hypervisor you use and the platform on which the hypervisor is run, minimum memory requirements vary. 16384 MB is sufficent to run Istio and bookinfo.

    If you don’t have enough RAM allocated to the minikube virtual machine, the following errors could occur:

    • image pull failures
    • healthcheck timeout failures
    • kubectl failures on the host
    • general network instability of the virtual machine and the host
    • complete lock-up of the virtual machine
    • host NMI watchdog reboots

    One effective way to monitor memory usage in minikube is to ssh into the minikube virtual machine and from that prompt run the top command:

    1. $ minikube ssh
    1. $ top
    2. GiB Mem : 12.4/15.7

    This shows 12.4GiB used of an available 15.7 GiB RAM within the virtual machine. This data was generated with the VMWare Fusion hypervisor on a Macbook Pro 13” with 16GiB RAM running Istio 1.2 with bookinfo installed.

  4. (Optional, recommended) If you want minikube to provide a load balancer for use by Istio, you can use the minikube tunnel feature. Run this command in a different terminal, because the minikube tunnel feature will block your terminal to output diagnostic information about the network:

    1. $ minikube tunnel

    Sometimes minikube does not clean up the tunnel network properly. To force a proper cleanup:

    1. $ minikube tunnel --cleanup