Kubernetes Concepts · Part 0808

Kubernetes SetupIntroduction ও Minikube

Kubernetes practice করার জন্য Cluster কোথায় পাব? Local machine, cloud নাকি online playground; Docker Desktop, Minikube, Kind ও kubeadm-এর পার্থক্য; তারপর Minikube দিয়ে hands-on setup এবং প্রথম Nginx deployment।

Three ways to get a Kubernetes cluster, local, cloud and online playground, with a terminal running minikube start and kubectl get nodes showing a Ready node
FIG. 08 Local, cloud নাকি playground: শেখার জন্য সবচেয়ে সহজ শুরু Minikube দিয়ে নিজের Laptop-এ।

Kubernetes শেখা শুরু করার সময় প্রথমেই একটি প্রশ্ন আসে:

Kubernetes practice করার জন্য Cluster কোথায় পাব?

Docker শেখার সময় আমরা নিজেদের Laptop বা Desktop-এ Docker Desktop install করে containers run করেছি।

কিন্তু Kubernetes একটু আলাদা।

Kubernetes ব্যবহার করতে হলে আমাদের একটি Kubernetes Cluster দরকার, যেখানে আমরা applications deploy, manage এবং scale করতে পারব।

ভালো বিষয় হলো, Kubernetes শেখার জন্য শুরুতেই expensive cloud server বা production infrastructure-এর প্রয়োজন নেই।

নিজের Laptop-এও Kubernetes Cluster তৈরি করা যায়।

আজকে আমরা দেখব Kubernetes Cluster setup করার বিভিন্ন উপায়, Docker Desktop এবং Minikube-এর পার্থক্য, Minikube কীভাবে কাজ করে এবং একটি local Kubernetes environment কীভাবে তৈরি করতে হয়।

1. Kubernetes Cluster Setup করার উপায়

সাধারণত Kubernetes practice করার জন্য তিন ধরনের environment ব্যবহার করা হয়।

                  Kubernetes Cluster
                          |
            +-------------+-------------+
            |             |             |
            ▼             ▼             ▼
       Local Setup    Cloud Setup    Playground
            |             |             |
       Docker Desktop     GKE        KodeKloud
       Minikube           EKS        Killercoda
       Kind               AKS        Online Labs
       kubeadm

প্রতিটি approach-এর কিছু সুবিধা এবং limitations রয়েছে।

কোনটি ব্যবহার করবে, সেটা নির্ভর করবে তোমার learning goal, available hardware এবং infrastructure experience-এর ওপর।

Option 1: Local Kubernetes Setup

Local setup মানে নিজের Laptop, Desktop অথবা Virtual Machine-এর মধ্যে Kubernetes Cluster তৈরি করা।

এক্ষেত্রে আলাদা Cloud Provider-এর প্রয়োজন হয় না।

Common tools:

ToolBest For
Docker Desktopসহজে local Kubernetes শুরু করা
MinikubeKubernetes শেখা এবং local testing
KindDocker containers ব্যবহার করে Kubernetes clusters তৈরি
kubeadmKubernetes cluster bootstrapping শেখা

Local setup-এর সুবিধা কী?

নিজের machine-এ cluster থাকলে ইচ্ছেমতো application deploy করতে পারবে, configuration পরিবর্তন করতে পারবে এবং বিভিন্ন Kubernetes commands practice করতে পারবে।

Cloud infrastructure-এর ongoing cost নিয়ে চিন্তা করতে হবে না।

তবে মনে রাখতে হবে, local Kubernetes Cluster চালাতে CPU, RAM এবং Disk resources প্রয়োজন।

Option 2: Cloud-Managed Kubernetes

Production environment-এ অনেক organizations Cloud Provider-এর managed Kubernetes services ব্যবহার করে।

Popular services:

Cloud ProviderKubernetes Service
Google CloudGKE — Google Kubernetes Engine
Amazon Web ServicesEKS — Elastic Kubernetes Service
Microsoft AzureAKS — Azure Kubernetes Service

Managed Kubernetes ব্যবহার করলে Cloud Provider control plane-এর অনেক operational responsibility manage করে।

যেমন:

  • Kubernetes Control Plane provisioning
  • Managed control plane availability
  • Control plane maintenance
  • Supported version upgrades
  • Cloud infrastructure integration

তবে এর মানে এই নয় যে সবকিছু automatically managed হয়ে যাবে।

Worker Nodes, networking, security configuration, application deployment এবং resource management-এর কিছু দায়িত্ব এখনও ব্যবহারকারীর থাকে। এগুলো selected service এবং configuration-এর ওপর নির্ভর করে।

Cloud Kubernetes Workflow

Developer
    |
    ▼
Cloud Console / CLI
    |
    ▼
Create Kubernetes Cluster
    |
    ▼
Configure Node Pools
    |
    ▼
Connect using kubectl
    |
    ▼
Deploy Applications

Cloud Kubernetes কখন ব্যবহার করা ভালো?

যখন real cloud infrastructure, managed services, production-like deployments অথবা cloud-native architecture practice করতে চাও।

তবে learning-এর শুরুতে Cloud Cluster বাধ্যতামূলক নয়।

আর Cloud Provider-এর pricing অনুযায়ী cluster, compute, storage এবং networking-এর জন্য charges হতে পারে।

Option 3: Kubernetes Online Playgrounds

ধরো, তোমার Laptop-এ খুব বেশি RAM নেই।

অথবা তুমি কোনো কিছু install না করে শুধু Kubernetes commands practice করতে চাও।

এক্ষেত্রে Online Kubernetes Playgrounds useful।

Examples:

KodeKloud Playgrounds

https://kodekloud.com/playgrounds/

Killercoda

https://killercoda.com/

এই platforms browser-based terminal এবং temporary Kubernetes environments provide করতে পারে।

Playground-এর সুবিধা

  • Local installation প্রয়োজন হয় না
  • Browser থেকেই Kubernetes commands practice করা যায়
  • Temporary learning environment পাওয়া যায়
  • দ্রুত hands-on labs করা যায়
  • নিজের machine-এর resources কম ব্যবহার হয়

তবে limitations আছে।

Playground sessions temporary হতে পারে, environment reset হতে পারে, resource limits থাকতে পারে এবং কিছু features subscription-এর ওপর নির্ভর করতে পারে।

তাই regular development এবং long-term experimentation-এর জন্য local Kubernetes Cluster বেশি convenient হতে পারে।

2. Docker Desktop দিয়ে Kubernetes Setup

Docker Desktop শুধু Docker containers run করার জন্য নয়।

এতে built-in Kubernetes support-ও রয়েছে।

যারা আগে থেকেই Docker Desktop ব্যবহার করছে, তাদের জন্য এটি Kubernetes শেখার সহজ starting point।

Docker Desktop macOS, Windows এবং Linux desktop environments-এ available।

Kubernetes Enable করার Process

প্রথমে Docker Desktop open করো।

তারপর Kubernetes settings-এ যাও।

Docker Desktop
      |
      ▼
Settings
      |
      ▼
Kubernetes
      |
      ▼
Enable Kubernetes
      |
      ▼
Apply / Create Cluster
      |
      ▼
Local Kubernetes Cluster

Docker Desktop-এর version অনুযায়ী settings-এর layout কিছুটা আলাদা হতে পারে।

নতুন versions-এ cluster provisioning-এর জন্য kubeadm বা kind-based options থাকতে পারে। তাই Docker Desktop Kubernetes সবসময় strictly single-node — এমন নয়।

Kubernetes Cluster Verify করা

Cluster ready হয়ে গেলে Terminal open করো।

kubectl cluster-info

এই command cluster-এর control plane information দেখাবে।

তারপর:

kubectl get nodes

Expected example:

NAME             STATUS   ROLES           AGE   VERSION
docker-desktop   Ready    control-plane   2m    v1.x.x

এই output থেকে বোঝা যায় Kubernetes-এর একটি Node available এবং Ready অবস্থায় রয়েছে।

Docker Desktop-এর provisioning method অনুযায়ী Node-এর সংখ্যা এবং নাম আলাদা হতে পারে।

Docker Desktop-এর সুবিধা

Docker Desktop-এ Kubernetes enable করলে manual control plane configuration-এর অনেক কাজ করতে হয় না।

তাই Kubernetes-এর basic concepts যেমন Pods, Deployments, Services এবং ConfigMaps শেখার জন্য এটি useful।

3. Minikube কী?

এবার আসি আজকের মূল বিষয় — Minikube।

Minikube হলো একটি open-source tool, যার মাধ্যমে নিজের computer-এ local Kubernetes Cluster তৈরি করা যায়।

সাধারণত Minikube একটি single-node Kubernetes Cluster তৈরি করে, তবে এটি multi-node local clusters-ও support করে।

এর মূল উদ্দেশ্য Kubernetes শেখা, development এবং testing সহজ করা।

সহজ ভাষায়:

Minikube হলো এমন একটি tool, যা তোমার নিজের Laptop বা Desktop-এর ভেতরে Kubernetes চালানোর environment তৈরি করে।

ধরো, তোমার একটি Python FastAPI application আছে।

এখন তুমি সেটিকে Kubernetes-এ deploy করতে চাও।

এর জন্য শুরুতেই AWS EKS বা Google GKE Cluster তৈরি করার দরকার নেই।

Minikube দিয়ে local environment-এ পুরো deployment process practice করতে পারো।

4. Minikube Internally কীভাবে কাজ করে?

Minikube বোঝার আগে একটি Kubernetes Cluster-এর basic architecture জানা দরকার।

Kubernetes Cluster সাধারণত দুটি logical অংশ নিয়ে গঠিত।

Control Plane এবং Worker Nodes।

Control Plane Components

Control Plane Cluster-এর overall management এবং orchestration-এর দায়িত্ব পালন করে।

এর গুরুত্বপূর্ণ components হলো:

ComponentResponsibility
API ServerKubernetes API requests process করে
etcdCluster configuration এবং state data store করে
SchedulerPods কোন Node-এ run করবে তা determine করে
Controller ManagerDesired state maintain করার জন্য controllers চালায়

Worker Node Components

Worker Node application workloads run করার জন্য ব্যবহৃত হয়।

ComponentResponsibility
KubeletNode-এ Pods-এর desired state maintain করতে সাহায্য করে
Container RuntimeContainers execute করে
kube-proxy / NetworkingService networking এবং traffic handling-এ ভূমিকা রাখে

Traditional Kubernetes Architecture

                 Kubernetes Cluster
                         |
          +--------------+--------------+
          |                             |
          ▼                             ▼
     Control Plane                 Worker Nodes
          |                             |
     API Server                     Kubelet
          |                             |
        etcd                      Container Runtime
          |                             |
     Scheduler                      Containers
          |
  Controller Manager

একটি production-grade Kubernetes Cluster manually configure করতে গেলে অনেক components setup করতে হয়।

Networking, certificates, API Server, container runtime, kubelet, control plane configuration — সবকিছু ঠিকভাবে configure করা জরুরি।

Minikube এই complex setup process অনেকটাই automate করে।

Minikube Single-Node Architecture

                Your Laptop
                    |
                    ▼
                Minikube
                    |
                    ▼
           VM / Container Driver
                    |
                    ▼
              Kubernetes Node
                    |
          +---------+---------+
          |                   |
          ▼                   ▼
     Control Plane       Worker Workloads
          |                   |
      API Server            Kubelet
         etcd                  |
      Scheduler         Container Runtime
     Controllers               |
                             Pods

Single-node Minikube Cluster-এ Control Plane এবং application workloads একই Node-এ থাকতে পারে।

Production environment-এ availability এবং scalability-এর জন্য multiple nodes ব্যবহার করা common।

5. Minikube চালাতে কী কী লাগবে?

Minikube setup করার জন্য কয়েকটি গুরুত্বপূর্ণ components দরকার।

মূলত:

  1. Minikube executable
  2. Compatible driver
  3. Kubernetes CLI (kubectl)

kubectl আলাদাভাবে install করা convenient হলেও Minikube নিজেও minikube kubectl -- command-এর মাধ্যমে kubectl provide করতে পারে।

A. Driver — Kubernetes Environment কোথায় Run করবে?

Minikube Cluster run করার জন্য একটি driver ব্যবহার করে।

Driver determine করে Kubernetes Node কোন environment-এ চলবে।

Minikube সাধারণত VM-based অথবা container-based drivers support করে।

Common Drivers

Operating SystemCommon Driver Options
WindowsDocker, Hyper-V, VirtualBox
macOSDocker, supported VM drivers
LinuxDocker, KVM2, VirtualBox

সঠিক driver availability operating system, hardware architecture এবং installed software-এর ওপর নির্ভর করে।

VM Driver কীভাবে কাজ করে?

Host Operating System
         |
         ▼
       Hypervisor
         |
         ▼
    Virtual Machine
         |
         ▼
   Kubernetes Node
         |
         ▼
    Application Pods

VM driver ব্যবহার করলে Minikube একটি Virtual Machine-এর মধ্যে Kubernetes environment তৈরি করতে পারে।

Docker Driver কীভাবে কাজ করে?

Host Operating System
         |
         ▼
     Docker Engine
         |
         ▼
  Minikube Node Container
         |
         ▼
    Kubernetes Cluster
         |
         ▼
         Pods

Docker driver ব্যবহার করলে Minikube Docker-এর ওপর ভিত্তি করে Kubernetes Node environment তৈরি করে।

এখানে একটি common confusion আছে:

Minikube-এর Docker driver ব্যবহার করার অর্থ এই নয় যে Kubernetes application containers run করার জন্য Docker Engine-কে CRI runtime হিসেবে ব্যবহার করছে।

Docker এখানে মূলত Minikube Node environment host করার driver হিসেবে কাজ করছে।

Node-এর ভেতরে Kubernetes containerd-এর মতো CRI-compatible runtime ব্যবহার করতে পারে।

6. kubectl — Kubernetes-এর Command-Line Tool

Docker-এর জন্য আমরা যেমন docker CLI ব্যবহার করি, Kubernetes-এর জন্য তেমনই kubectl ব্যবহার করি।

kubectl-এর মাধ্যমে Kubernetes Cluster-এর API Server-এর সঙ্গে communicate করা যায়।

Example:

kubectl get nodes

Cluster-এর Nodes list করবে।

kubectl get pods

Current namespace-এর Pods দেখাবে।

kubectl get pods -A

সব namespaces-এর Pods দেখাবে।

kubectl cluster-info

Cluster-এর basic information দেখাবে।

kubectl Communication Flow

Developer
    |
    ▼
  kubectl
    |
    ▼
Kubernetes API Server
    |
    ▼
Kubernetes Resources
    |
    ├── Pods
    ├── Deployments
    ├── Services
    ├── ConfigMaps
    └── Secrets

অর্থাৎ kubectl Kubernetes-এর API-এর সঙ্গে communicate করে।

এটি সরাসরি container runtime-এর সঙ্গে container start বা stop করার command পাঠায় না।

kubectl এবং Docker CLI-এর পার্থক্য

Docker CLIkubectl
Docker Engine-এর সঙ্গে communicate করেKubernetes API Server-এর সঙ্গে communicate করে
Docker containers manage করেKubernetes resources manage করে
docker pskubectl get pods
docker logskubectl logs
docker runDeployment বা Pod create করার commands

এখানে Docker container এবং Kubernetes Pod একই জিনিস নয়।

Pod হলো Kubernetes-এর smallest deployable workload unit, যার মধ্যে এক বা একাধিক containers থাকতে পারে।

7. Minikube CLI — Cluster Create এবং Manage করার Tool

Minikube executable install করার পর আমরা minikube command ব্যবহার করে local Kubernetes Cluster manage করতে পারি।

Common commands:

minikube start

নতুন Cluster start করে।

minikube status

Minikube-এর status দেখায়।

minikube stop

Cluster stop করে।

minikube delete

Cluster এবং Minikube-managed resources delete করে।

Minikube vs kubectl

দুটি tools-এর responsibilities আলাদা।

minikube
    |
    ▼
Create / Start / Stop Cluster
    |
    ▼
Kubernetes Cluster
    |
    ▲
    |
kubectl
    |
    ▼
Deploy / Inspect / Manage Workloads

Minikube: Kubernetes environment তৈরি এবং manage করে।

kubectl: সেই environment-এর Kubernetes resources manage করে।

8. Minikube Installation — Basic Hands-On Setup

এবার একটি simple local Minikube Cluster চালানোর workflow দেখি।

এই example-এ Docker driver ব্যবহার করব।

তাই আগে Docker Engine বা Docker Desktop install এবং running থাকতে হবে।

Step 1: Docker Verify করো

docker version

তারপর:

docker run --rm hello-world

Docker properly কাজ করলে Minikube-এর Docker driver ব্যবহার করা যাবে।

Step 2: Minikube Install করো

Official installation guide:

https://minikube.sigs.k8s.io/docs/start/

Operating System অনুযায়ী installation procedure আলাদা।

macOS

Homebrew installed থাকলে:

brew install minikube

Windows

Windows Package Manager available থাকলে:

winget install Kubernetes.minikube

Linux

Linux distribution এবং CPU architecture অনুযায়ী official Minikube binary অথবা package install করা যায়।

উদাহরণস্বরূপ, Linux x86-64 system-এ:

curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64

তারপর:

sudo install minikube-linux-amd64 /usr/local/bin/minikube

Apple Silicon বা Linux ARM64 system-এর জন্য architecture-specific installer ব্যবহার করতে হবে।

Step 3: Minikube Version Check করো

minikube version

Version information দেখতে পেলে বুঝবে Minikube CLI installed হয়েছে।

Step 4: Docker Driver দিয়ে Cluster Start করো

minikube start --driver=docker

এই command execute করলে Minikube সাধারণত:

  • Required Kubernetes environment প্রস্তুত করবে
  • Kubernetes Node create করবে
  • Control Plane components start করবে
  • Container runtime configure করবে
  • Cluster networking initialize করবে
  • kubectl-এর জন্য cluster context configure করবে

প্রথমবার start করার সময় required images download হতে পারে।

Default Driver Configure করা

যদি সবসময় Docker driver ব্যবহার করতে চাও:

minikube config set driver docker

এরপর সাধারণভাবে চালাতে পারবে:

minikube start

Step 5: Cluster Status Check করো

minikube status

Example output:

minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

Output-এর format Minikube version অনুযায়ী কিছুটা আলাদা হতে পারে।

Step 6: Kubernetes Node Verify করো

kubectl get nodes

Expected example:

NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   2m    v1.x.x

এখানে Ready মানে Node Kubernetes workloads run করার জন্য ready।

যদি local kubectl install করা না থাকে, তাহলে Minikube-এর bundled kubectl ব্যবহার করতে পারো:

minikube kubectl -- get nodes

Step 7: System Pods Check করো

kubectl get pods -A

এখানে Kubernetes-এর internal system components-এর Pods দেখতে পাবে।

যেমন:

NAMESPACE     NAME                 STATUS
kube-system   coredns-xxxxx        Running
kube-system   etcd-minikube        Running
kube-system   kube-apiserver-...   Running

Cluster configuration অনুযায়ী আরও Pods থাকতে পারে।

এই পর্যন্ত সবকিছু ঠিক থাকলে Minikube Cluster ready।

9. Minikube-এ First Application Deploy করা

Cluster create করা হয়েছে। এবার একটি real application deploy করি।

আমরা Nginx ব্যবহার করব।

Step 1: Deployment Create করো

kubectl create deployment nginx-demo --image=nginx

এখন Kubernetes একটি Deployment resource create করবে।

Deployment Controller desired Pod state maintain করার চেষ্টা করবে।

Step 2: Deployment Check করো

kubectl get deployments

তারপর:

kubectl get pods

Expected example:

NAME                          READY   STATUS    RESTARTS
nginx-demo-xxxxxxxxxx-xxxxx   1/1     Running   0

Running এবং READY 1/1 দেখালে application container running এবং ready।

Step 3: Service Create করো

kubectl expose deployment nginx-demo \
  --type=NodePort \
  --port=80

এটি একটি Kubernetes Service create করবে।

Service-এর কাজ হলো Pods-এর কাছে network traffic পৌঁছে দেওয়ার stable abstraction provide করা।

Step 4: Service Check করো

kubectl get services

এখন Minikube-এর service access করার জন্য:

minikube service nginx-demo

এই command local browser open করতে পারে এবং Minikube driver অনুযায়ী access URL বা forwarding mechanism provide করতে পারে।

শুধু URL দেখতে চাইলে:

minikube service nginx-demo --url

কিছু environment-এ, বিশেষ করে Docker driver-এর সঙ্গে macOS বা Windows-এ, service tunnel চালু রাখতে Terminal খোলা রাখতে হতে পারে।

Alternative: Port Forwarding

kubectl port-forward service/nginx-demo 8080:80

এরপর browser-এ:

http://localhost:8080

এখন Nginx Welcome Page দেখতে পাবে।

Port forwarding চলা পর্যন্ত command-এর Terminal session active রাখতে হবে।

10. Minikube Dashboard

Minikube-এর একটি useful feature হলো Kubernetes Dashboard integration।

Dashboard দিয়ে graphical interface থেকে Kubernetes resources inspect করা যায়।

Dashboard launch করতে:

minikube dashboard

এটি supported configuration-এ Kubernetes Dashboard enable বা open করতে সাহায্য করে।

Dashboard-এর মাধ্যমে cluster-এর Pods, Deployments, Services এবং resource status inspect করতে পারো।

তবে dashboard availability এবং supported versions Minikube ও Kubernetes configuration-এর ওপর নির্ভর করতে পারে।

11. Minikube Cluster Stop, Restart এবং Delete করা

Minikube ব্যবহার করার সময় তিনটি commands মনে রাখা জরুরি।

Cluster Stop

minikube stop

এটি cluster stop করে। সাধারণত persistent Minikube state delete করে না।

Cluster Restart

minikube start

আগের existing profile থাকলে Minikube সেটি আবার start করতে পারে।

Cluster Delete

minikube delete

এটি Minikube Cluster remove করে।

Important: minikube delete ব্যবহার করলে Cluster-এর resources এবং Minikube-managed persistent state হারিয়ে যেতে পারে।

তাই গুরুত্বপূর্ণ data থাকলে আগে backup নিতে হবে।

Test Application Cleanup

Cluster চালু রেখে শুধু Nginx application remove করতে চাইলে:

kubectl delete service nginx-demo
kubectl delete deployment nginx-demo

এতে Minikube Cluster delete হবে না।

12. Minikube দিয়ে Multi-Node Cluster তৈরি করা যায়?

অনেক পুরোনো Kubernetes tutorials-এ Minikube-কে শুধুমাত্র Single-Node Cluster tool হিসেবে explain করা হয়।

কিন্তু Minikube এখন multiple local nodes support করে।

উদাহরণ:

minikube start --nodes=3 --driver=docker

এটি তিনটি nodes নিয়ে local Minikube Cluster create করতে পারে।

তারপর:

kubectl get nodes

Example:

NAME           STATUS   ROLES
minikube       Ready    control-plane
minikube-m02   Ready    <none>
minikube-m03   Ready    <none>

Worker nodes-এর ROLES column-এ সাধারণত <none> দেখায়, কারণ worker role label default-ভাবে set করা থাকে না।

এভাবে multiple nodes ব্যবহার করে Pod scheduling, node management এবং cluster behavior practice করা যায়।

তবে multi-node Minikube Cluster একটি full production-grade highly available Kubernetes environment-এর equivalent নয়।

13. kubeadm কী এবং Minikube থেকে কীভাবে আলাদা?

Minikube local learning environment তৈরি করার process automate করে।

কিন্তু kubeadm দিয়ে Kubernetes Cluster bootstrap করার fundamental process শেখা যায়।

kubeadm হলো Kubernetes-এর official cluster bootstrapping tool।

এটি Kubernetes Control Plane initialize করা এবং additional Nodes join করানোর জন্য ব্যবহার করা হয়।

Typical kubeadm Architecture

                 Kubernetes Cluster
                          |
             +------------+------------+
             |                         |
             ▼                         ▼
       Control Plane               Worker Nodes
             |                         |
       API Server                   Kubelet
          etcd                         |
       Scheduler                Container Runtime
      Controllers                      |
             |                     App Pods
             +-------------------------+

kubeadm-এর Common Commands

Control Plane initialization:

sudo kubeadm init

Worker Node join করার command-এর structure:

sudo kubeadm join <control-plane-endpoint> \
  --token <bootstrap-token> \
  --discovery-token-ca-cert-hash sha256:<hash>

এগুলো শুধু command structure বোঝানোর example।

Real Cluster setup-এর জন্য আগে compatible container runtime, kubelet, kubectl, networking, certificates এবং other prerequisites configure করতে হবে।

Control Plane initialize করার পরে Pod networking-এর জন্য compatible CNI plugin setup করাও সাধারণত প্রয়োজন।

kubeadm Docker Desktop বা Minikube-এর মতো one-click desktop solution নয়।

এটি actual Kubernetes Cluster bootstrapping এবং administration শেখার জন্য useful।

14. Docker Desktop vs Minikube vs Kind vs kubeadm

এবার সব options একসঙ্গে compare করি।

FeatureDocker DesktopMinikubeKindkubeadm
Primary PurposeDesktop KubernetesLocal KubernetesContainer-based test clustersKubernetes cluster bootstrap
DifficultyVery EasyEasy–MediumEasy–MediumAdvanced
Single NodeYesYesYesYes
Multi-NodeSupported configurationsYesYesYes
Docker DependencyDocker DesktopDriver-dependentCommonly Docker or PodmanNot required
VM SupportManaged internallyDriver-dependentContainer-basedReal/virtual machines
Local DevelopmentExcellentExcellentExcellentPossible
Kubernetes TestingGoodVery GoodExcellentGood
Cluster Administration LearningLimitedModerateModerateExcellent
Production SuitabilityNot intendedNot intendedNot intendedCan bootstrap production clusters

কোনটি সবচেয়ে ভালো?

শুধু দ্রুত Kubernetes practice শুরু করতে চাইলে Docker Desktop যথেষ্ট।

Kubernetes-এর concepts আরও systematically শিখতে চাইলে Minikube ভালো।

Automated integration testing অথবা disposable multi-node Kubernetes clusters দরকার হলে Kind useful।

আর Kubernetes-এর real infrastructure architecture, node setup, networking এবং administration গভীরভাবে বুঝতে চাইলে kubeadm শেখা গুরুত্বপূর্ণ।

15. Kubernetes Setup Options — Real-Life Analogy

পুরো বিষয়টি একটি সহজ example দিয়ে বোঝা যায়।

ধরো, তুমি গাড়ি চালানো শিখতে চাও।

তোমার সামনে কয়েকটি option আছে।

Kubernetes SetupReal-Life Analogy
Online PlaygroundBrowser-based driving simulator
Docker DesktopAutomatic car — চালানো শুরু করা সহজ
MinikubePractice car — শেখার জন্য নিজের environment
Kindএকাধিক test car নিয়ে simulation
kubeadmগাড়ির mechanical setup এবং operation শেখা
Managed KubernetesProfessional service নিয়ে infrastructure ব্যবহার

প্রথম দিন থেকেই গাড়ির engine খুলে আবার assemble করার প্রয়োজন নেই।

আগে driving basics শেখা যায়।

তারপর ধীরে ধীরে engine এবং infrastructure-এর details বোঝা যায়।

Kubernetes-এর ক্ষেত্রেও একই approach useful।

প্রথমে Pods, Deployments, Services এবং ConfigMaps বোঝো।

তারপর Cluster Networking, Scheduling, Storage, Security এবং Multi-Node Administration-এ যাও।

যদি তুমি Kubernetes একেবারে শুরু থেকে শিখতে চাও, তাহলে এই learning sequence follow করতে পারো।

Step 1:  Docker Fundamentals
      |
      ▼
Step 2:  Docker Images & Containers
      |
      ▼
Step 3:  Docker Networking & Volumes
      |
      ▼
Step 4:  Docker Compose
      |
      ▼
Step 5:  Minikube Installation
      |
      ▼
Step 6:  kubectl Fundamentals
      |
      ▼
Step 7:  Pods, Deployments & Services
      |
      ▼
Step 8:  ConfigMaps & Secrets
      |
      ▼
Step 9:  Storage & Persistent Volumes
      |
      ▼
Step 10: Ingress & Networking
      |
      ▼
Step 11: Helm
      |
      ▼
Step 12: Multi-Node Kubernetes
      |
      ▼
Step 13: kubeadm & Cluster Administration
      |
      ▼
Step 14: Production Kubernetes

এই sequence-এ Kubernetes শেখা শুরু করতে production-grade infrastructure setup করার প্রয়োজন নেই।

Minikube দিয়ে বেশিরভাগ foundational concepts hands-on practice করা সম্ভব।

17. Quick Kubernetes Setup Verification Commands

Local Minikube Cluster setup করার পর এই commands ব্যবহার করতে পারো:

# Minikube Version
minikube version

# Cluster Start
minikube start --driver=docker

# Cluster Status
minikube status

# Kubernetes Cluster Information
kubectl cluster-info

# List Cluster Nodes
kubectl get nodes

# List All Pods
kubectl get pods -A

# List All Namespaces
kubectl get namespaces

# Create Test Deployment
kubectl create deployment nginx-demo --image=nginx

# Check Deployment
kubectl get deployments

# Check Pods
kubectl get pods

# Expose Application
kubectl expose deployment nginx-demo \
  --type=NodePort \
  --port=80

# Open Application
minikube service nginx-demo

# Cleanup Test Application
kubectl delete service nginx-demo
kubectl delete deployment nginx-demo

# Stop Cluster
minikube stop

যদি Cluster Ready থাকে, test Pods run করে এবং application successfully access করা যায়, তাহলে local Kubernetes environment basic practice-এর জন্য ready।

18. Final Takeaway — কোন Kubernetes Setup ব্যবহার করা উচিত?

Kubernetes শেখার জন্য সব installation options একসঙ্গে try করার দরকার নেই।

তোমার available resources এবং learning goal অনুযায়ী একটি option select করলেই যথেষ্ট।

Docker Desktop: সবচেয়ে সহজভাবে Kubernetes শুরু করতে চাইলে।

Minikube: Dedicated local Kubernetes learning environment চাইলে।

Kind: Disposable test clusters এবং automated testing-এর জন্য।

kubeadm: Kubernetes Cluster-এর real setup এবং administration বোঝার জন্য।

Managed Kubernetes: GKE, EKS বা AKS-এর মতো cloud infrastructure নিয়ে কাজ করতে চাইলে।

Online Playground: কিছু install না করে browser থেকে দ্রুত Kubernetes commands practice করতে চাইলে।

আমার মতে Kubernetes শেখার জন্য Minikube একটি ভালো starting point, কারণ এটি local environment-এ Kubernetes-এর গুরুত্বপূর্ণ features practice করার সুযোগ দেয়।

এরপর যখন Pods, Deployments, Services, Networking এবং Storage সম্পর্কে ভালো ধারণা তৈরি হবে, তখন kubeadm ব্যবহার করে multi-node Cluster setup করার দিকে এগোনো যাবে।

Official Documentation & References

One-Line Summary

Kubernetes Cluster নিজের Computer-এ Docker Desktop, Minikube বা Kind দিয়ে তৈরি করা যায়; real multi-node setup শেখার জন্য kubeadm ব্যবহার করা যায়; Cloud-এ GKE, EKS ও AKS রয়েছে; আর কোনো installation ছাড়াই practice করার জন্য Online Kubernetes Playgrounds ব্যবহার করা সম্ভব।

Kubernetes শেখার শুরুতে সবচেয়ে গুরুত্বপূর্ণ বিষয় হলো একটি working Cluster পাওয়া।

কারণ Kubernetes শুধু theory পড়ে শেখার technology নয়। Pods create করা, Deployments manage করা, Services expose করা এবং real applications run করার মাধ্যমেই Kubernetes-এর concepts সবচেয়ে ভালোভাবে বোঝা যায়।

Was this guide helpful?

Search the archive

Press Esc to close