← Về danh sách bài học Bài 2/25

🛠️ Bài 2: Cài Đặt Môi Trường Kubernetes

⏱️ Thời gian: 20 phút | 📚 Độ khó: Dễ

🎯 Sau bài học này, bạn sẽ:

1. Các Công Cụ Cần Thiết

Công cụ Mô tả
kubectl CLI để giao tiếp với Kubernetes cluster
Minikube Chạy K8s cluster trên máy local (VM hoặc container)
Docker Desktop Tích hợp sẵn K8s (macOS/Windows)
kind K8s in Docker - nhẹ, nhanh
💡 Khuyến nghị cho người mới:
macOS/Windows: Docker Desktop với K8s tích hợp (đơn giản nhất)
Linux: Minikube với driver docker

2. Cài Đặt kubectl

🍎 macOS

# Cách 1: Homebrew (khuyên dùng)
brew install kubectl

# Cách 2: Tải binary
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

# Kiểm tra
kubectl version --client

🪟 Windows

# Cách 1: Chocolatey
choco install kubernetes-cli

# Cách 2: Scoop
scoop install kubectl

# Cách 3: Tải từ web
# https://dl.k8s.io/release/v1.28.0/bin/windows/amd64/kubectl.exe

# Kiểm tra (PowerShell)
kubectl version --client

🐧 Linux (Ubuntu/Debian)

# Cài đặt kubectl
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt-get update
sudo apt-get install -y kubectl

# Kiểm tra
kubectl version --client

3. Cài Đặt Minikube

🍎 macOS

# Homebrew
brew install minikube

# Hoặc tải binary
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
sudo install minikube-darwin-amd64 /usr/local/bin/minikube

🪟 Windows

# Chocolatey
choco install minikube

# Hoặc tải installer từ:
# https://minikube.sigs.k8s.io/docs/start/

🐧 Linux

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

4. Khởi Tạo Cluster

🚀 Với Minikube

# Khởi tạo cluster (lần đầu mất vài phút)
minikube start

# Với driver cụ thể
minikube start --driver=docker    # Dùng Docker
minikube start --driver=hyperkit  # macOS native
minikube start --driver=virtualbox

# Kiểm tra status
minikube status

# Output mong đợi:
# minikube
# type: Control Plane
# host: Running
# kubelet: Running
# apiserver: Running
# kubeconfig: Configured

🐳 Với Docker Desktop

1Mở Docker Desktop

Settings → Kubernetes → ✅ Enable Kubernetes → Apply & Restart

2Chờ khởi tạo

Kubernetes icon chuyển xanh là đã sẵn sàng (3-5 phút lần đầu)

⚠️ Yêu cầu hệ thống:
• RAM: Tối thiểu 4GB (khuyến nghị 8GB+)
• CPU: 2 cores trở lên
• Disk: 20GB trống

5. Kiểm Tra Cluster

# Xem cluster info
kubectl cluster-info

# Output:
# Kubernetes control plane is running at https://127.0.0.1:xxxxx
# CoreDNS is running at https://127.0.0.1:xxxxx/api/v1/...

# Xem các nodes
kubectl get nodes

# Output:
# NAME       STATUS   ROLES           AGE   VERSION
# minikube   Ready    control-plane   5m    v1.28.0

# Xem tất cả namespaces
kubectl get namespaces

# Xem pods trong namespace kube-system
kubectl get pods -n kube-system
💡 Mẹo hay: Tạo alias để gõ nhanh hơn
alias k='kubectl'
alias kgp='kubectl get pods'

6. Lệnh kubectl Thường Dùng

# Xem resources
kubectl get pods              # Liệt kê pods
kubectl get pods -A           # Tất cả namespaces
kubectl get pods -o wide      # Chi tiết hơn
kubectl get deployments
kubectl get services
kubectl get all               # Tất cả resources

# Mô tả chi tiết
kubectl describe pod 
kubectl describe node 

# Logs
kubectl logs 
kubectl logs -f      # Follow realtime

# Exec vào container
kubectl exec -it  -- /bin/sh

# Apply/Delete từ file
kubectl apply -f 
kubectl delete -f 

# Context (chuyển cluster)
kubectl config get-contexts
kubectl config use-context minikube

7. Thực Hành: Chạy Pod Đầu Tiên

# Tạo pod nginx nhanh
kubectl run my-nginx --image=nginx --port=80

# Kiểm tra
kubectl get pods
# NAME       READY   STATUS    RESTARTS   AGE
# my-nginx   1/1     Running   0          30s

# Chi tiết pod
kubectl describe pod my-nginx

# Xóa pod
kubectl delete pod my-nginx
🎉 Chúc mừng!
Bạn đã cài đặt thành công môi trường K8s và chạy Pod đầu tiên!

📝 Tóm Tắt Bài Học