minikube elastic metal
Jump toUpdate content

Setting up Kubernetes with Minikube on a Elastic Metal Server

Reviewed on 07 February 2023Published on 27 May 2019
  • compute
  • Kubernetes
  • Minikube
  • server
  • Elastic-Metal-server

Kubernetes is an open-source platform for managing containerized workloads and services with a rapidly growing ecosystem. Kubernetes orchestrates computing, networking, and storage infrastructure on behalf of user workloads. The tool facilitates both: declarative configuration and automation and was released to the public by Google in 2014.

Kubernetes has several features. It can be thought of as:

  • a container platform
  • a microservices platform
  • a portable cloud platform and a lot more.

Minikube runs a single-node Kubernetes cluster inside a VM on your computer or cloud server for developing and testing applications.

Minikube supports Kubernetes features such as:

  • DNS
  • NodePorts
  • ConfigMaps and Secrets
  • Dashboards
  • Container Runtime: Docker, rkt, CRI-O and containerd
  • Enabling CNI (Container Network Interface)
  • Ingress
Security & Identity (IAM):

You may need certain IAM permissions to carry out some actions described on this page. This means:

  • you are the Owner of the Scaleway Organization in which the actions will be carried out, or
  • you are an IAM user of the Organization, with a policy granting you the necessary permission sets

Downloading and Installing Minikube

  1. Check if the CPU of your server supports hardware virtualization. The output of the following command shall not be empty:
    egrep --color 'vmx|svm' /proc/cpuinfo
  2. Minikube relies on a Hypervisor to run the Kubernetes VM. This tutorial uses KVM (Kernel Virtual Machine), but it is also possible to run Minikube on VirtualBox.
    apt-get install qemu qemu-kvm libvirt-bin virtinst curl
  3. Download the Minikube binary and make it executable:
    curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube
  4. Download and install the KVM driver for Minikube:
    curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 && chmod +x docker-machine-driver-kvm2
  5. Copy the binary file to /usrlocal/bin/ to make it available system-wide, then remove the downloaded binary:
    cp docker-machine-driver-kvm2 /usr/local/bin/ && rm docker-machine-driver-kvm2
  6. Download and install kubectl, a CLI tool to manage Kubernetes:
    curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl
  7. Copy the binary file to /usrlocal/bin/ to make it available system-wide, then remove the downloaded binary:
    cp kubectl /usr/local/bin && rm kubectl

Using Minikube

  1. Start Minikube:

    minikube start --vm-driver=kvm2

    An output informs you about the status of Minikube:

    😄 minikube v1.1.0 on linux (amd64)
    2019/05/27 15:11:47 No matching credentials were found, falling back on anonymous
    🔥 Creating kvm2 VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...
    🐳 Configuring environment for Kubernetes v1.14.2 on Docker 18.09.6
    💾 Downloading kubeadm v1.14.2
    💾 Downloading kubelet v1.14.2
    🚜 Pulling images ...
    🚀 Launching Kubernetes ...
    ⌛ Verifying: apiserver proxy etcd scheduler controller dns
    🏄 Done! kubectl is now configured to use "minikube"
  2. Check the health status of minikube:

    minikube status
    host: Running
    kubelet: Running
    apiserver: Running
    kubectl: Correctly Configured: pointing to minikube-vm at
  3. Start an Echoserver deployment:

    kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.14 --port=8080

    Once the deployment is created, a message confirms the step:

    deployment.apps/hello-minikube created
  4. Check the running pods and configured deployments:

    kubectl get pods
    hello-minikube-56cdb79778-qj7sd 1/1 Running 0 3m47s
    kubectl get deployments
    hello-minikube 1/1 1 1 5m59s

    Expose an echoserver deployment with NodePort

    kubectl expose deployment hello-minikube --type=NodePort
  5. curl the service created by running the following command:

    curl $(minikube service hello-minikube --url)

    A response similar to this example is shown:

    Hostname: hello-minikube-56cdb79778-qj7sd
    Pod Information:
    -no pod information available-
    Server values:
    server_version=nginx: 1.13.3 - lua: 10008
    Request Information:
    real path=/
    Request Headers:
    Request Body:
    -no body in request-
  6. Delete the hello-minikube service:

    kubectl delete services hello-minikube
  7. Delete the deployment:

    kubectl delete deployment hello-minikube

    A confirmation displays:

    deployment.extensions "hello-minikube" deleted
  8. Stop Minikube:

    minikube stop

    A confirmation displays:

    ✋ Stopping "minikube" in kvm2 ...
    🛑 "minikube" stopped.

For more information regarding Minikube and Kubernetes, check out the official documentation and the Minikube GitHub repository.