Minikube Installation & Deploying Applications : Step by Step Procedure

What you’ll need

Step 1:

  • To install the latest minikube stable release on x86-64 Linux using binary download:
    • curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
    • sudo install minikube-linux-amd64 /usr/local/bin/minikube

Step 2:

  • Start your cluster From a terminal with administrator access (but not logged in as root), run:
    • minikube start

Step 3: Interact with your cluster

  • If you already have kubectl installed, you can now use it to access your shiny new cluster:
    • kubectl get po -A
  • Alternatively, minikube can download the appropriate version of kubectl and you should be able to use it like this:
    • minikube kubectl — get po -A
  • You can also make your life easier by adding the following to your shell config:
    • alias kubectl=”minikube kubectl –“
  • Initially, some services such as the storage-provisioner, may not yet be in a Running state. This is a normal condition during cluster bring-up, and will resolve itself momentarily. For additional insight into your cluster state, minikube bundles the Kubernetes Dashboard, allowing you to get easily acclimated to your new environment:
    • minikube dashboard

Step 4: Deploy application & Expose through “Service”

  • Create a sample deployment and expose it on port 8080:
    • kubectl create deployment hello-minikube –image=kicbase/echo-server:1.0
    • kubectl expose deployment hello-minikube –type=NodePort –port=8080
  • It may take a moment, but your deployment will soon show up when you run:
    • kubectl get services hello-minikube
  • The easiest way to access this service is to let minikube launch a web browser for you:
    • minikube service hello-minikube
  • Alternatively, use kubectl to forward the port:
    • kubectl port-forward service/hello-minikube 7080:8080
  • Tada! Your application is now available at http://localhost:7080/.
  • You should be able to see the request metadata in the application output. Try changing the path of the request and observe the changes. Similarly, you can do a POST request and observe the body show up in the output.

Step 5: Deploy application & Expose through “LoadBalancer”

  • To access a LoadBalancer deployment, use the “minikube tunnel” command. Here is an example deployment:
    • kubectl create deployment balanced –image=kicbase/echo-server:1.0
    • kubectl expose deployment balanced –type=LoadBalancer –port=8080
  • In another window, start the tunnel to create a routable IP for the ‘balanced’ deployment:
    • minikube tunnel
  • To find the routable IP, run this command and examine the EXTERNAL-IP column:
    • kubectl get services balanced
  • Your deployment is now available at :8080

Step 6: Deploy application & Expose through “Ingress

  • Enable ingress addon:
    • minikube addons enable ingress
  • The following example creates simple echo-server services and an Ingress object to route to these services.
kind: Pod
apiVersion: v1
metadata:
  name: foo-app
  labels:
    app: foo
spec:
  containers:
    - name: foo-app
      image: 'kicbase/echo-server:1.0'
---
kind: Service
apiVersion: v1
metadata:
  name: foo-service
spec:
  selector:
    app: foo
  ports:
    - port: 8080
---
kind: Pod
apiVersion: v1
metadata:
  name: bar-app
  labels:
    app: bar
spec:
  containers:
    - name: bar-app
      image: 'kicbase/echo-server:1.0'
---
kind: Service
apiVersion: v1
metadata:
  name: bar-service
spec:
  selector:
    app: bar
  ports:
    - port: 8080
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
spec:
  rules:
    - http:
        paths:
          - pathType: Prefix
            path: /foo
            backend:
              service:
                name: foo-service
                port:
                  number: 8080
          - pathType: Prefix
            path: /bar
            backend:
              service:
                name: bar-service
                port:
                  number: 8080
---
  • Apply the contents
    • kubectl apply -f https://storage.googleapis.com/minikube-site-examples/ingress-example.yaml
  • Wait for ingress address
    • kubectl get ingress
kubectl get ingress
NAME              CLASS   HOSTS   ADDRESS          PORTS   AGE
example-ingress   nginx   *       <your_ip_here>   80      5m45s

Note for Docker Desktop Users:
To get ingress to work you’ll need to open a new terminal window and run minikube tunnel and in the following step use 127.0.0.1 in place of <ip_from_above>.

Now verify that the ingress works

$ curl <ip_from_above>/foo
Request served by foo-app
...

$ curl <ip_from_above>/bar
Request served by bar-app
...

Step 7: Manage your cluster

Pause Kubernetes without impacting deployed applications:

minikube pause

Copy

Unpause a paused instance:

minikube unpause

Halt the cluster:

minikube stop

Change the default memory limit (requires a restart):

minikube config set memory 9001

Browse the catalog of easily installed Kubernetes services:

minikube addons list

Create a second cluster running an older Kubernetes release:

minikube start -p aged --kubernetes-version=v1.16.1

Delete all of the minikube clusters:

minikube delete --all

Leave a Comment

MFH IT Solutions (Regd No -LIN : AP-03-46-003-03147775)

Consultation & project support organization.

Contact

MFH IT Solutions (Regd)
NAD Kotha Road, Opp Bashyam School, Butchurajupalem, Jaya Prakash Nagar Visakhapatnam, Andhra Pradesh – 530027