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, andkubeadm 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
Root User Validation – Ensures the script runs as root.
Swap Disable – Disable swap (K8s requirement).
Kernel Modules – Load
overlay
andbr_netfilter
.Sysctl Configuration – Enable packet forwarding and bridge network rules.
Containerd Installation – Set
SystemdCgroup = true
for Kubernetes compatibility.Kubernetes Installation – Install
kubeadm
,kubelet
, andkubectl
.Cluster Initialization – Run
kubeadm init
.Kubeconfig Setup – Configure kubeconfig for both root and a non-root user (default:
ubuntu
).CNI Installation – Install Weave Net for pod networking.
Join Command Display – Print the command for workers to join the cluster.
In Node machine you need to do the following things
Root User Check
Swap Disable
Kernel Modules Load
Sysctl Setup
Containerd Installation
Kubernetes Installation
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
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
