এই Tutorial-এ আমরা দেখব কীভাবে নিজের Computer-এ Minikube ব্যবহার করে একটি Basic Kubernetes Cluster তৈরি করতে হয়।
আমরা kubectl install করা থেকে শুরু করে Virtualization Check, Docker বা VirtualBox Driver Configure, Minikube Install, Cluster Start এবং একটি Real Application Deploy করা পর্যন্ত পুরো Process দেখব।
এই Beginner Course-এ Minikube ব্যবহার করা হচ্ছে, কারণ এটি সহজ এবং Kubernetes-এর Basic Practice করার জন্য যথেষ্ট।
Minikube আমাদের নিজের Computer-এ একটি ছোট Local Kubernetes Cluster তৈরি করার সুবিধা দেয়।
আরও Advanced Multi-Node Kubernetes Cluster Setup করার জন্য পরবর্তী Advanced Courses-এ kubeadm-এর মতো Tools ব্যবহার করা হয়।
1. এই Tutorial-এর মূল উদ্দেশ্য
এই Demo-এর মূল লক্ষ্য হলো Minikube ব্যবহার করে একটি Working Kubernetes Cluster তৈরি করা এবং সেই Cluster-এর মধ্যে একটি Application Deploy করে Test করা।
আমরা শিখব:
kubectlকীভাবে Install করতে হয়।- Virtualization Support কীভাবে Check করতে হয়।
- VirtualBox অথবা Docker Driver কীভাবে ব্যবহার করতে হয়।
- Minikube কীভাবে Install করতে হয়।
- Minikube Cluster কীভাবে Start করতে হয়।
- Kubernetes Cluster-এর Status কীভাবে Check করতে হয়।
- একটি Test Application কীভাবে Deploy করতে হয়।
- Application-কে Service হিসেবে কীভাবে Expose করতে হয়।
- Browser থেকে Application কীভাবে Access করতে হয়।
- Testing শেষ হলে Resources কীভাবে Delete করতে হয়।
আমাদের সম্পূর্ণ Workflow হবে:
Install kubectl
|
▼
Check Driver Requirements
|
▼
Install Docker or VirtualBox
|
▼
Install Minikube
|
▼
Start Kubernetes Cluster
|
▼
Verify Cluster
|
▼
Deploy Application
|
▼
Create Service
|
▼
Access Application
|
▼
Clean Up
2. Minikube Install করার আগে কী কী প্রয়োজন?
Minikube ব্যবহার করার আগে চারটি গুরুত্বপূর্ণ বিষয় বুঝতে হবে:
- kubectl
- Virtualization Support
- Hypervisor অথবা Driver
- Minikube
এই Tutorial-এ মূলত Linux Ubuntu Environment ব্যবহার করা হচ্ছে।
তবে Windows এবং macOS-এর জন্যও Installation Commands দেখানো হবে।
| Component | কাজ |
|---|---|
kubectl | Kubernetes Cluster Manage করার CLI |
| Virtualization | Virtual Machine চালানোর জন্য Hardware Support |
| Hypervisor / Driver | Kubernetes Environment Run করার Platform |
| Minikube | Local Kubernetes Cluster Create এবং Manage করা |
Important: Docker Driver ব্যবহার করলে Linux-এ সাধারণত hardware virtualization support দরকার হয় না। কিন্তু VirtualBox বা অন্য VM-based Driver ব্যবহার করতে চাইলে Virtualization Support প্রয়োজন।
3. প্রথমে kubectl Install করা
kubectl হলো Kubernetes-এর Command-Line Tool।
Terminal থেকে Kubernetes Cluster-এর সঙ্গে Communicate করার জন্য আমরা kubectl ব্যবহার করি।
এর মাধ্যমে Manage করতে পারি:
- Kubernetes Cluster
- Applications
- Deployments
- Services
- Nodes
- Pods
সহজভাবে বলতে গেলে:
kubectl হলো এমন একটি Command-Line Tool, যার মাধ্যমে আমরা Kubernetes-এর সঙ্গে কথা বলি এবং বিভিন্ন Resources Manage করি।
Minikube Install করার আগে kubectl Install করা ভালো, কারণ Minikube Cluster Create করার পর kubectl-এর Configuration Automatically Update করতে পারে।
তবে kubectl আলাদাভাবে Install করা বাধ্যতামূলক নয়। Minikube-এর Bundled kubectl ব্যবহার করার সুবিধাও রয়েছে।
3.1 Ubuntu / Linux-এ kubectl Installation
Step 1: CPU Architecture Check করা
প্রথমে Terminal Open করো।
uname -m
Possible Output:
x86_64 → Intel / AMD 64-bit
aarch64 → ARM64
CPU Architecture অনুযায়ী Correct kubectl Binary Download করতে হবে।
Step 2: kubectl Download করা
Ubuntu/Linux AMD64-এর জন্য:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
ARM64-এর জন্য:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"
এই Command Kubernetes-এর Stable Release-এর kubectl Binary Download করবে।
Step 3: Download Verify করা
Security-এর জন্য Download করা Binary-এর Checksum Verify করা ভালো।
AMD64-এর ক্ষেত্রে:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
ARM64 ব্যবহার করলে URL-এ amd64-এর পরিবর্তে arm64 ব্যবহার করতে হবে।
তারপর:
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
Expected Output:
kubectl: OK
Binary এবং Checksum একই Release-এর হতে হবে।
Step 4: kubectl Install করা
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
এই Command Download করা kubectl Binary System-এর Executable Directory-তে Install করবে।
Step 5: Installation Verify করা
kubectl version --client
Expected Example:
Client Version: v1.x.x
এখন Ubuntu/Linux-এ kubectl Successfully Installed।
3.2 Windows-এ kubectl Installation
Windows-এ winget ব্যবহার করে kubectl Install করা যায়।
Step 1: PowerShell Open করা
PowerShell Open করে নিচের Command Execute করো:
winget install -e --id Kubernetes.kubectl
Installation Complete হলে নতুন PowerShell Window Open করো।
Step 2: Version Check করা
kubectl version --client
Expected:
Client Version: v1.x.x
Alternative: Chocolatey
Chocolatey আগে থেকেই Installed থাকলে:
choco install kubernetes-cli
Note: Docker Desktop-এর সঙ্গে kubectl already available থাকতে পারে। তাই আলাদা Installation করার আগে Check করতে পারো:
kubectl version --client
3.3 macOS-এ kubectl Installation
macOS-এ Homebrew ব্যবহার করে kubectl Install করা যায়।
Terminal Open করো।
brew install kubectl
Installation Complete হলে:
kubectl version --client
Expected:
Client Version: v1.x.x
এখন macOS-এ kubectl Ready।
3.4 kubectl Configuration কেন গুরুত্বপূর্ণ?
kubectl একাধিক Kubernetes Cluster-এর সঙ্গে কাজ করতে পারে।
উদাহরণস্বরূপ:
kubectl → Local Minikube Cluster
kubectl → Cloud Kubernetes Cluster
kubectl → Company Production Cluster
এখন প্রশ্ন হলো, kubectl কীভাবে বুঝবে কোন Cluster-এর সঙ্গে Communicate করতে হবে?
এর জন্য kubectl একটি Configuration File ব্যবহার করে, যার নাম kubeconfig।
Default Location:
~/.kube/config
Minikube যখন একটি Kubernetes Cluster Create করে, তখন এটি kubeconfig Update করতে পারে, যাতে kubectl নতুন Cluster-এর সঙ্গে Connect করতে পারে।
Available Contexts Check করা
kubectl config get-contexts
Current Context Check করা
kubectl config current-context
Minikube Context Select করা
kubectl config use-context minikube
Important: kubectl ব্যবহার করার সময় Current Context Check করা ভালো, বিশেষ করে যখন Local এবং Production Clusters একই Computer থেকে Manage করা হয়।
4. Virtualization Support Check করা
Minikube সাধারণত একটি Virtual Machine অথবা অন্য Isolated Environment-এর মধ্যে Kubernetes Run করে।
VirtualBox Driver ব্যবহার করলে Computer-এ Virtualization Support থাকা জরুরি।
Linux-এ CPU Virtualization Flags Check করা যায়।
Common Flags:
vmx→ Intel Virtualizationsvm→ AMD Virtualization
Command:
grep -E --color 'vmx|svm' /proc/cpuinfo
যদি Output পাওয়া যায়, তাহলে CPU Virtualization Features Expose করছে।
যদি Output না আসে, তাহলে BIOS/UEFI Settings থেকে Virtualization Enable করার প্রয়োজন হতে পারে।
তবে শুধুমাত্র CPU Flags পাওয়া গেলেই Hypervisor সম্পূর্ণ Ready — এমন নয়। BIOS/UEFI, Host Configuration এবং VM Environment-ও সঠিক হতে হবে।
Docker Driver ব্যবহার করলে: Linux-এ সাধারণত এই Virtualization Check প্রয়োজন হয় না। তবে macOS ও Windows-এ Docker Desktop-এর নিজস্ব Virtualization বা WSL 2 Requirements থাকতে পারে।
5. Hypervisor অথবা Driver Install করা
Hypervisor হলো এমন একটি Software, যার মাধ্যমে Computer-এর মধ্যে Virtual Machines Run করা যায়।
এই Tutorial-এ VirtualBox ব্যবহার করা হয়েছে।
তবে Minikube-এর জন্য আরও কিছু Hypervisor অথবা Driver ব্যবহার করা যায়।
| Operating System | Example Driver Options |
|---|---|
| Linux | VirtualBox, KVM, Docker |
| Windows | VirtualBox, Hyper-V, Docker |
| macOS | Docker, Supported VM Drivers |
Minikube Docker-কেও Driver হিসেবে ব্যবহার করতে পারে।
তাই এই Tutorial-এ আমরা দুটি Setup Method দেখব:
Method A: VirtualBox Driver দিয়ে Kubernetes Cluster Start করা।
Method B: Docker Driver দিয়ে Kubernetes Cluster Start করা।
Virtual Machine কেন ব্যবহার করা হয়?
VM-based Setup-এর কিছু সুবিধা:
- Virtual Machine সহজে Delete এবং Recreate করা যায়।
- Host System থেকে তুলনামূলক ভালো Isolation পাওয়া যায়।
- Virtual Machine Snapshots ব্যবহার করা যেতে পারে।
- Kubernetes Environment আলাদাভাবে Manage করা যায়।
Docker Driver-এরও সুবিধা রয়েছে।
যদি Docker আগে থেকেই Install করা থাকে, তাহলে আলাদা Hypervisor Install না করেও Minikube Run করা যায়।
6. Minikube Install করা
kubectl এবং একটি Compatible Driver প্রস্তুত করার পর আমাদের Minikube Command-Line Tool Install করতে হবে।
Minikube হলো এমন একটি Tool, যার মাধ্যমে Local Kubernetes Cluster Create এবং Manage করা যায়।
6.1 Ubuntu / Linux-এ Minikube Install করা
প্রথমে CPU Architecture Check করো:
uname -m
AMD64-এর জন্য:
curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64
Install করো:
sudo install minikube-linux-amd64 /usr/local/bin/minikube
ARM64-এর জন্য:
curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-arm64
তারপর:
sudo install minikube-linux-arm64 /usr/local/bin/minikube
Version Check:
minikube version
6.2 Windows-এ Minikube Install করা
PowerShell Open করো।
winget install -e --id Kubernetes.minikube
Installation Complete হলে PowerShell Restart করো।
Check:
minikube version
6.3 macOS-এ Minikube Install করা
Homebrew ব্যবহার করে:
brew install minikube
তারপর:
minikube version
Expected Example:
minikube version: v1.x.x
এখন Minikube Installed।
Minikube-এর Basic Commands
minikube start
minikube status
minikube stop
এখানে:
minikube start→ Kubernetes Cluster Start করে।minikube status→ Cluster-এর Status দেখায়।minikube stop→ Kubernetes Cluster Stop করে।
Official Installation Guide:
https://minikube.sigs.k8s.io/docs/start/
7. Method A — VirtualBox দিয়ে Minikube Start করা
এই Tutorial-এর Original Demo-তে VirtualBox Driver ব্যবহার করা হয়েছে।
VirtualBox আগে থেকে Install এবং Properly Configured থাকতে হবে।
Official Website:
Linux/Ubuntu-তে Distribution Repository থেকে Install করার একটি সাধারণ উপায়:
sudo apt update
sudo apt install -y virtualbox
তবে Package Availability, Kernel Modules এবং Supported VirtualBox Version Ubuntu Release-এর ওপর নির্ভর করে।
Installation Verify করতে:
VBoxManage --version
Step 1: VirtualBox Driver দিয়ে Cluster Start করা
minikube start --driver=virtualbox
এই Command Execute করলে Minikube:
- Required Minikube ISO/Image Download করে।
- VirtualBox-এর মধ্যে Virtual Machine Create করে।
- Kubernetes Components Install এবং Configure করে।
- Kubernetes Cluster Start করে।
- kubectl-এর Kubeconfig Configure করে।
Architecture
Your Laptop
|
▼
VirtualBox
|
▼
Virtual Machine
|
▼
Minikube
|
▼
Kubernetes Cluster
|
├── API Server
├── etcd
├── Scheduler
├── Controller Manager
├── Kubelet
└── Container Runtime
এই Process Complete হলে একটি Local Kubernetes Cluster Ready হবে।
Step 2: Minikube Status Check করা
minikube status
Step 3: Kubernetes Nodes Check করা
kubectl get nodes
Expected Example:
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 2m v1.x.x
এখানে Ready মানে Kubernetes Node Ready অবস্থায় রয়েছে।
8. Method B — Docker Driver দিয়ে Minikube Start করা
VirtualBox ছাড়াও Minikube Docker Driver ব্যবহার করে Cluster Start করতে পারে।
যদি Docker Engine বা Docker Desktop আগে থেকেই Installed থাকে, তাহলে এটি একটি সহজ Approach।
Docker Driver ব্যবহার করার জন্য Docker Engine Running থাকতে হবে।
Step 1: Docker Installation Verify করা
Terminal Open করে:
docker --version
তারপর:
docker info
Docker Container Run হচ্ছে কি না Test করতে:
docker run --rm hello-world
Expected Output:
Hello from Docker!
যদি Linux-এ Docker Service Running না থাকে, তাহলে:
sudo systemctl enable --now docker
Docker Desktop ব্যবহার করলে Application Open এবং Engine Running থাকতে হবে।
Step 2: Docker Driver দিয়ে Minikube Start করা
minikube start --driver=docker
এই Command Execute করলে Minikube Docker ব্যবহার করে Kubernetes Cluster তৈরি করবে।
Docker Driver Architecture
Your Computer
|
▼
Docker Engine / Docker Desktop
|
▼
Minikube Node Container
|
▼
Kubernetes Components
|
├── API Server
├── etcd
├── Scheduler
├── Controller Manager
├── Kubelet
└── Container Runtime
|
▼
Kubernetes Cluster Ready
এখানে VirtualBox Virtual Machine-এর পরিবর্তে Docker-based Node Environment ব্যবহার হচ্ছে।
Important: Minikube Docker Driver ব্যবহার করলেও Kubernetes Node-এর ভিতরে containerd-এর মতো CRI-Compatible Runtime ব্যবহার করা হতে পারে।
Docker এখানে মূলত Kubernetes Node Environment Host করার Driver হিসেবে কাজ করছে।
Step 3: Docker-কে Default Minikube Driver করা
প্রতিবার --driver=docker লিখতে না চাইলে:
minikube config set driver docker
এরপর:
minikube start
Command দিয়েই Docker Driver ব্যবহার করা যাবে, যদি Profile এবং Configuration Compatible থাকে।
Step 4: Minikube Status Check করা
minikube status
Expected Example:
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
সব Components Running থাকলে Cluster Ready।
Step 5: Kubernetes Node Check করা
kubectl get nodes
Expected:
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 2m v1.x.x
এখানে Minikube একটি Single-Node Kubernetes Cluster Create করেছে।
Step 6: Kubernetes System Pods Check করা
kubectl get pods -A
Example Output:
NAMESPACE NAME STATUS
kube-system coredns-xxxxx Running
kube-system etcd-minikube Running
kube-system kube-apiserver-minikube Running
Kubernetes Version এবং Configuration অনুযায়ী আরও System Pods থাকতে পারে।
Step 7: Docker-এর মধ্যে Minikube Check করা
Docker Driver ব্যবহার করলে Minikube Node একটি Docker-based Container Environment-এর মধ্যে Run করে।
Check করতে:
docker ps
এখানে Minikube-related Container দেখতে পাওয়া যাবে।
এর মাধ্যমে Confirm করা যায় Minikube Docker Driver ব্যবহার করছে।
9. VirtualBox Driver vs Docker Driver
| Feature | VirtualBox Driver | Docker Driver |
|---|---|---|
| Kubernetes Environment | Virtual Machine | Container-based Node |
| VirtualBox Required | Yes | No |
| Docker Required | No | Yes |
| Hardware Virtualization | Required | Linux-এ সাধারণত দরকার নেই |
| Setup Complexity | Medium | Easy, যদি Docker Installed থাকে |
| Isolation | VM-based | Container-based |
| Local Kubernetes Practice | Yes | Yes |
| Start Command | minikube start --driver=virtualbox | minikube start --driver=docker |
দুটি Approach-ই Kubernetes শেখার জন্য ব্যবহার করা যায়।
VirtualBox Driver ব্যবহার করলে Kubernetes একটি VM-based Environment-এর মধ্যে Run করে।
Docker Driver ব্যবহার করলে Kubernetes Docker-based Node Environment-এর মধ্যে Run করে।
এই Tutorial-এর পরবর্তী Application Deployment Steps দুটি Driver-এর ক্ষেত্রেই একই।
