What is Kubernetes? Minikube Installation on Windows 10
Published: 2022-08-03 18:46:42

**Kubernetes (or k8s for short) is an open source container orchestration platform.**
**It automates many of the manual tasks typically associated with a container-based infrastructure.**
**K8s transforms virtual and physical machines into a unified API surface. A developer can then use the Kubernetes API to deploy, scale, and manage containerized applications.**
**It helps manage containers that run the applications and ensures there is no downtime in a production environment. For example, if a container goes down, another container automatically takes its place without the end-user ever noticing.**

## Kubernetes Architecture and Components

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/krcw9zjp31pmz25sx004.png)

## **The Kubernetes Master (Master Node) receives input from a CLI (Command-Line Interface) or UI (User Interface) via an API.**

## API Server
**The API Server is the front-end of the control plane and the only component in the control plane that we interact with directly. Internal system components, as well as external user components, all communicate via the same API.**

## Key-Value Store (etcd)
**The Key-Value Store, also called etcd, is a database Kubernetes uses to back-up all cluster data. It stores the entire configuration and state of the cluster. The Master node queries etcd to retrieve parameters for the state of the nodes, pods, and containers.**

## Controller
**The role of the Controller is to obtain the desired state from the API Server. It checks the current state of the nodes it is tasked to control, and determines if there are any differences, and resolves them, if any.**

## Scheduler
**A Scheduler watches for new requests coming from the API Server and assigns them to healthy nodes. It ranks the quality of the nodes and deploys pods to the best-suited node. If there are no suitable nodes, the pods are put in a pending state until such a node appears.**



## **Worker nodes listen to the API Server for new work assignments; they execute the work assignments and then report the results back to the Kubernetes Master node.**

## Kubelet
**The kubelet runs on every node in the cluster. It is the principal Kubernetes agent. By installing kubelet, the node’s CPU, RAM, and storage become part of the broader cluster. It watches for tasks sent from the API Server, executes the task, and reports back to the Master. It also monitors pods and reports back to the control panel if a pod is not fully functional. Based on that information, the Master can then decide how to allocate tasks and resources to reach the desired state.**

## Container Runtime
**The container runtime pulls images from a container image registry and starts and stops containers. A 3rd party software or plugin, such as Docker, usually performs this function.**

## Kube-proxy
**The kube-proxy makes sure that each node gets its IP address, implements local iptables and rules to handle routing and traffic load-balancing.**

## Pod
**A pod is the smallest element of scheduling in Kubernetes. Without it, a container cannot be part of a cluster. If you need to scale your app, you can only do so by adding or removing pods.**

**The pod serves as a ‘wrapper’ for a single container with the application code. Based on the availability of resources, the Master schedules the pod on a specific node and coordinates with the container runtime to launch the container.**

## Minikube Installation

**Minikube is a tool that lets you run Kubernetes locally.Minikube runs a single-node Kubernetes cluster on your personal computer (including Windows, macOS and Linux PCs) so that you can try out Kubernetes, or for daily development work.**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rohwkuiqnfksdm7khck9.png)

**Step 1: Check if Virtualization is supported in your machine**

```
systeminfo
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/70gva6qn2z4zf5dh2wfc.png)

**Step 2: Download/Install kubectl, minikube utility & Add it to the Local ENV PATH**

```
https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/
```

```
https://github.com/kubernetes/minikube/releases
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xv5d6106yt1ojouoppzr.png)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c3bsu00mwqceiwxto9kb.png)

**Try this to make sure you have kubectl installed**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k7l623tmdoerpi2tnkym.png)

**Step 3: Download/Install a Hypervisor | ORACLE VM BOX**

```
https://www.virtualbox.org/wiki/Downloads
```

**Step 4: Start the Minikube (Specify the Driver)**

```
minikube start --driver=virtualbox or minikube start
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f4c5ykqlzilz2fjyij47.png)
```
minikube status
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tyjearunb0rm9kr02t4f.png)