Implementing K8s Architecture: minikube v/s kubeadm v/s Managed Services (EKS/AKS/GKE)

Before we implement, you need to know the different ways to set up a Kubernetes cluster. There are 3 types in which we can create a K8s cluster , 1) Minikube 2) kubectl(the most famous and common) 3) Cloud Managed Service which is through various cloud service providers They all give you the same Kubernetes, but the responsibilities differ (who manages what).

Minikube (Local Setup)

Best for beginners / local testing.

  • Runs Kubernetes on your laptop (inside VM or Docker).

  • Designed for learning and experimenting.

  • You get 1 Node cluster (Control Plane + Worker on same machine).

  • Very easy setup:

  • But not production-grade.

Use case:

  • Learning

  • Running sample apps

  • Small dev environment

Kubeadm (Self-Hosted Setup)

Best for hands-on understanding of real cluster setup.

  • You provision real servers/VMs (on-prem or cloud, e.g., EC2).

  • One machine = Control Plane (master)

  • Other machines = Worker Nodes

  • You run kubeadm init on master, and kubeadm join on workers.

  • You manage everything yourself:

    • Installing Kubernetes components

    • Networking (CNI plugin like Flannel, Weave, Calico)

    • Upgrades

    • Security patches

Use case:

  • Learning production-like setup

  • Lab environments for deep understanding

  • When you want full control

Cloud Managed Kubernetes (EKS, AKS, GKE)

Best for production.

  • Here, cloud providers manage the Control Plane (master).

  • You only manage Worker Nodes and Pods.

  • Example:

    • EKS = Amazon Elastic Kubernetes Service

    • AKS = Azure Kubernetes Service

    • GKE = Google Kubernetes Engine

  • Provider handles:

    • Control Plane HA & upgrades

    • etcd database backups

    • API server scaling

  • You handle:

    • Worker nodes (sometimes even these can be auto-managed)

    • Deployments, Services, Ingress, monitoring

Use case:

  • Enterprise production clusters

  • High availability, scalability, security

  • Teams who don’t want to babysit the Control Plane

How to implement kubeadm on your cloud/local

Just open any cloud provider you use whether it maybe AWS/Azure/GCP be it anything, All you need to do is Just launch 3 Virtual Machines, In those 3 three machines one should be bigger and the rest should be smaller in configuration wise, The bigger one will be used for Master machine and the rest two will be used for node machines

In Master machine you need to setup the following things

  1. Root User Validation – Ensures the script runs as root.

  2. Swap Disable – Disable swap (K8s requirement).

  3. Kernel Modules – Load overlay and br_netfilter.

  4. Sysctl Configuration – Enable packet forwarding and bridge network rules.

  5. Containerd Installation – Set SystemdCgroup = true for Kubernetes compatibility.

  6. Kubernetes Installation – Install kubeadm, kubelet, and kubectl.

  7. Cluster Initialization – Run kubeadm init.

  8. Kubeconfig Setup – Configure kubeconfig for both root and a non-root user (default: ubuntu).

  9. CNI Installation – Install Weave Net for pod networking.

  10. Join Command Display – Print the command for workers to join the cluster.

In Node machine you need to do the following things

  1. Root User Check

  2. Swap Disable

  3. Kernel Modules Load

  4. Sysctl Setup

  5. Containerd Installation

  6. Kubernetes Installation

  7. Join Cluster – Use the join command from the master node output.

You don’t need to worry about doing all these manually, There is a repository named K8-s-Architecture-Shell-Script in my Github where you can see the shell script and see the required instructions to be follow and setup your first k8s cluster

0
Subscribe to my newsletter

Read articles from Jai Vardhan Narayana directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Jai Vardhan Narayana
Jai Vardhan Narayana