Danh sách bài viết trong series Học Kubernetes Từ Cơ Bản Đến Chứng Chỉ CKAD
- Lộ Trình Học Kubernetes Từ Cơ Bản Đến Chứng Chỉ CKAD
- Bài 1: Giới Thiệu Kubernetes Và Khái Niệm Cluster Cho CKAD
- Bài 2: Cài Đặt Minikube Và sử dụng kubectl Cơ Bản
- Bài 3: Quản Lý Pod Cơ Bản (Create, Delete, Describe)
- Bài 4: Sử Dụng ConfigMap Và Secret Trong YAML
- Bài 5: Quản Lý Environment Variables Và Command/Args
- Bài 6: Cấu Hình Deployment Và Replica Set
- Bài 7: Thiết Kế Pod Với Nhiều Container
- Bài 8: Sử Dụng Sidecar Và Init Container
- Bài 9: Chia Sẻ Tài Nguyên Giữa Các Container
- Bài 10: Giám Sát Log Và Events Với kubectl logs
- Bài 11: Debug Pod Với kubectl describe Và exec
- Bài 12: Tối Ưu Pod Với Resource Limits Và Requests
- Bài 13: Sử Dụng Liveness Và Readiness Probes
- Bài 14: Tối Ưu Hóa Pod Với HPA (Horizontal Pod Autoscaler)
- Bài 15: Cấu Hình Service (ClusterIP, NodePort)
- Bài 16: Sử Dụng Ingress Và Network Policy
- Bài 17: Quản Lý DNS Và Load Balancing Trong Kubernetes
- Bài 18: Sử Dụng Volume (emptyDir, hostPath)
- Bài 19: Cấu Hình Persistent Volume Và Persistent Volume Claim
- Bài 20: Tổng Kết, Mẹo Thi CKAD, Bài Tập Thực Hành Cuối
Sau khi đã nắm được các khái niệm cốt lõi về Kubernetes ở Bài 1, chúng ta sẽ bước vào phần thực hành đầu tiên. Bài này tập trung vào việc cài đặt Minikube một công cụ đơn giản dễ tiếp cận nhất để tạo cluster Kubernetes local và làm quen với các command kubectl cơ bản. Đây là nền tảng quan trọng để bạn có thể tương tác thực tế với Kubernetes vì cơ bản là làm luôn trên máy cá nhân được không cần hạ tầng khủng.
Bài viết này thuộc domain Core Concepts của kỳ thi CKAD (chiếm 15% trọng số), là phần thể hiện khả năng thiết lập môi trường và sử dụng kubectl để quản lý cluster. Trong CKAD, bạn sẽ làm việc trong một môi trường thi online với sẵn cluster, nhưng mà chắc rồi việc thực hành trên Minikube sẽ giúp bạn quen thuộc với các command, giúp tiết kiệm thời gian với 120 phút cho 15-20 nhiệm vụ hands-on (Thông thường mình thấy không dùng hết thời gian đâu mà).
Chúng ta sẽ sử dụng tài liệu chính thức từ Kubernetes và Minikube để đảm bảo tính chính xác, kèm theo các mẹo thực tế để áp dụng vào kỳ thi (mà mình cũng tham khảo từ docs chính thức và các nguồn lớn khác mình cũng nói ở bài lộ trình rồi).
Tiện đây thì mình cũng để luôn các cách cài đặt Minikube trên các hệ điều hành phổ biến, sau đó học cách sử dụng kubectl để xem, tạo và quản lý tài nguyên. Bài viết sẽ dài và chi tiết để bạn có thể theo dõi từng bước.
Minikube Là Gì Và Tại Sao Nên Sử Dụng?
Minikube là một công cụ mã nguồn mở do cộng đồng Kubernetes phát triển, cho phép bạn chạy một cluster Kubernetes đơn giản trên máy tính cá nhân. Nó sử dụng các driver như Docker, VirtualBox, Hyper-V hoặc VMware để tạo một node duy nhất (hoặc multi-node nếu cần), mô phỏng môi trường Production. Minikube hỗ trợ các tính năng như dashboard, addons (ví dụ: ingress, metrics-server), và dễ dàng tích hợp với kubectl.
Lợi ích chính của Minikube:
- Dễ dàng thiết lập: Chỉ cần vài command để có cluster chạy.
- Tiết kiệm chi phí: Không cần tài khoản cloud như AWS EKS hay GKE.
- Lý tưởng cho học tập và phát triển: Bạn có thể thử nghiệm, debug mà không ảnh hưởng đến môi trường thực.
- Tích hợp với CKAD: Minikube giúp bạn luyện tập các nhiệm vụ thi như tạo pod, deployment, hoặc debug, vì kỳ thi yêu cầu kỹ năng thực hành nhanh với
kubectltrên một cluster tương tự.
Trong CKAD, bạn không cần cài Minikube (cluster đã được cấp sẵn rồi), nhưng việc thực hành trên đó sẽ giúp bạn nắm vững cách cluster hoạt động, từ khởi động đến kiểm tra trạng thái những kỹ năng xuất hiện ở các domain như Core Concepts và Pod Design.
Dưới đây là sơ đồ minh họa kiến trúc Minikube từ tài liệu chính thức, cho thấy cách nó tạo một cluster local với load balancer, services và pods.
Hướng Dẫn Cài Đặt Minikube Chi Tiết
Trước khi cài đặt, hãy đảm bảo máy tính của bạn đáp ứng yêu cầu cơ bản: Ít nhất 2 CPU cores, 4GB RAM, và một container runtime như Docker (khuyến nghị). Nếu chưa có Docker, tải tại docker.com. Sau khi cài Minikube, bạn cần cài kubectl (sẽ hướng dẫn ở phần sau).
Dưới đây là hướng dẫn chi tiết cho từng hệ điều hành, dựa trên tài liệu chính thức từ Minikube (phiên bản mới nhất). Mình sẽ bao gồm các lựa chọn cài đặt phổ biến: binary download, package manager, và verification steps. Nếu gặp lỗi, kiểm tra driver (ví dụ: minikube start --driver=docker).
Cài Đặt Minikube Trên Linux (x86-64)
Yêu cầu tiên quyết: Truy cập curl và sudo. Nếu dùng Debian-based (Ubuntu), chuẩn bị cho .deb; RPM-based (Fedora, CentOS) cho .rpm.
Cách 1: Tải binary trực tiếp (Khuyến nghị)
- Tải file binary:
curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64 - Cài đặt và dọn dẹp:
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
Cách 2: Sử dụng Debian Package
- Tải package:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb - Cài đặt:
sudo dpkg -i minikube_latest_amd64.deb
Cách 3: Sử dụng RPM Package
- Tải package:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm - Cài đặt:
sudo rpm -Uvh minikube-latest.x86_64.rpm
Cài xong bạn sẽ thấy output như này:
😄 minikube v1.31.2 on Ubuntu 20.04
✨ Using the docker driver based on user configuration
👍 Starting control plane node minikube in cluster minikube
🚜 Pulling base image ...
🔥 Creating docker container (CPUs=2, Memory=4000MB) ...
🐳 Preparing Kubernetes v1.27.3 on Docker ...
🌟 Enabled addons: default-storageclass, storage-provisioner
🏄 Done! kubectl is now configured to use "minikube" cluster.
Kiểm tra và khởi động:
- Kiểm tra phiên bản:
minikube version. - Khởi động cluster:
minikube start(sử dụng quyền admin nếu cần). -
Xác nhận:
minikube statushoặckubectl get nodes. Nếu thấy node “Ready”, thành công! Lưu ý: Một số service như storage-provisioner có thể mất vài phút để chạy.kubectl cluster-infoOutput:
Kubernetes control plane is running at https://127.0.0.1:8443 CoreDNS is running at https://127.0.0.1:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Cài Đặt Minikube Trên macOS (x86-64 và ARM64)
Yêu cầu tiên quyết: Homebrew (cài tại brew.sh) cho cách dễ nhất, hoặc curl/sudo cho binary.
Cách 1: Sử dụng Homebrew (Khuyến nghị cho cả Intel và Apple Silicon)
- Cài đặt:
brew install minikube - Nếu command
which minikubekhông tìm thấy:brew unlink minikube && brew link minikube
Cách 2: Tải binary (x86-64)
- Tải:
curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-darwin-amd64 - Cài đặt:
sudo install minikube-darwin-amd64 /usr/local/bin/minikube
Cách 3: Tải binary (ARM64)
- Tải:
curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-darwin-arm64 - Cài đặt:
sudo install minikube-darwin-arm64 /usr/local/bin/minikube
Kiểm tra và khởi động: Giống Linux. Sử dụng minikube start --driver=hyperkit nếu dùng HyperKit driver.
Cài Đặt Minikube Trên Windows (x86-64)
Yêu cầu tiên quyết: Windows Package Manager (winget) hoặc Chocolatey (chocolatey.org). PowerShell với quyền admin cho .exe.
Cách 1: Sử dụng Winget
- Cài đặt:
winget install Kubernetes.minikube
Cách 2: Sử dụng Chocolatey
- Cài đặt:
choco install minikube
Cách 3: Tải .exe
- Tạo thư mục và tải (PowerShell):
New-Item -Path 'c:\' -Name 'minikube' -ItemType Directory -Force $ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -OutFile 'c:\minikube\minikube.exe' -Uri 'https://github.com/kubernetes/minikube/releases/latest/download/minikube-windows-amd64.exe' -UseBasicParsingHoặc tải installer từ https://storage.googleapis.com/minikube/releases/latest/minikube-installer.exe và chạy.
- Thêm vào PATH (PowerShell admin):
$oldPath = [Environment]::GetEnvironmentVariable('Path', [EnvironmentVariableTarget]::Machine) if ($oldPath.Split(';') -inotcontains 'C:\minikube'){ } - Đóng và mở lại terminal.
Kiểm tra và khởi động: Giống trên. Sử dụng minikube start --driver=hyperv nếu dùng Hyper-V.
Sau khi cài, thử minikube dashboard để mở giao diện web xem cluster. Nếu gặp lỗi (ví dụ: driver không tương thích), tham khảo https://minikube.sigs.k8s.io/docs/drivers/.
Cài Đặt Và Làm Quen Với kubectl
kubectl (phát âm “cube-control”) là công cụ CLI chính thức để tương tác với Kubernetes API. Nó cho phép bạn tạo, xem, cập nhật và xóa tài nguyên như pods, services. Để cài đặt:
- Trên Linux/macOS:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" && sudo install kubectl /usr/local/bin/kubectl(thay linux/amd64 bằng hệ thống của bạn). - Trên Windows: Tải từ https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/.
Kích hoạt autocomplete cho Bash: source <(kubectl completion bash) (thêm vào ~/.bashrc). Điều này cực kỳ hữu ích cho CKAD, giúp bạn gõ command nhanh hơn.
Dưới đây là các command kubectl cơ bản, phân loại theo chức năng. Mình sẽ giải thích chi tiết, kèm ví dụ và liên hệ thực tế.
Cấu Hình kubectl (Configuration)
- Xem cấu hình hiện tại:
kubectl config viewhiển thị kubeconfig, bao gồm clusters, users, contexts.
Ví dụ: Kiểm tra sau khi start Minikube để thấy context “minikube”. - Chuyển context:
kubectl config use-context minikubechuyển sang cluster local. - Đặt namespace mặc định:
kubectl config set-context --current --namespace=defaulttiết kiệm thời gian khi không cần chỉ định -n mỗi command.
Trong CKAD, bạn thường làm việc với nhiều namespaces command này giúp tránh lỗi sai namespace.
Xem Tài Nguyên (Viewing Resources)
- Liệt kê pods:
kubectl get podshoặckubectl get po -A(tất cả namespaces). Thêm-o wideđể xem IP/node.
Ví dụ: Sauminikube start, chạy command này để thấy pods hệ thống như coredns. - Mô tả chi tiết:
kubectl describe pod <pod-name>xem events, status, conditions. Rất hữu ích debug. - Liệt kê nodes:
kubectl get nodeskiểm tra trạng thái cluster. - Liệt kê events:
kubectl get events --sort-by=.metadata.creationTimestampxem lịch sử sự kiện.
Mẹo CKAD: Sử dụng JSONPath để trích xuất dữ liệu cụ thể, ví dụ: kubectl get pods -o jsonpath='{.items[*].metadata.name}' liệt kê tên pods.
Tạo Và Quản Lý Tài Nguyên (Creating Resources)
- Áp dụng manifest YAML:
kubectl apply -f file.yaml– Tạo/cập nhật tài nguyên từ file (declarative).
Ví dụ: Tạo pod đơn giản:cat <<EOF > my-pod.yaml apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx EOFApply cấu hình:
kubectl apply -f my-pod.yaml - Tạo imperative:
kubectl create deployment my-dep --image=nginxnhanh cho test. - Xóa tài nguyên:
kubectl delete pod nginxhoặckubectl delete -f file.yaml.
Trong CKAD, ưu tiên apply vì thi yêu cầu viết YAML thủ công.
Các Command Khác Cơ Bản
- Exec vào pod:
kubectl exec -it <pod-name> -- /bin/sh– Chạy shell bên trong container. - Xem logs:
kubectl logs <pod-name>– Debug ứng dụng. - Port-forward:
kubectl port-forward pod/nginx 8080:80– Truy cập service local.
Dưới đây là bảng cheat sheet kubectl, tóm tắt các command cơ bản để bạn lab.

Liên Hệ Với Chứng Chỉ CKAD
Domain Core Concepts yêu cầu thành thạo kubectl để xử lý 15% câu hỏi, như tạo pod từ YAML, describe node, hoặc get resources. Trong lúc thi, bạn có 2 giờ để hoàn thành tasks hands-on, nên luyện autocomplete và lệnh tắt (po thay pods, svc thay services).
Mẹo: Sử dụng kubectl explain pod để xem docs YAML nhanh. Thực hành trên Minikube sẽ giúp bạn quen với môi trường thi (dùng browser-based terminal), tránh mất thời gian debug cài đặt.
Thực Hành Thực Tế
- Cài Minikube và start cluster.
- Chạy
kubectl get nodesvàkubectl get pods -A. - Tạo pod nginx như ví dụ, describe nó, rồi delete.
- Mở dashboard:
minikube dashboardvà khám phá giao diện.
Nếu gặp vấn đề, dùng minikube logs để debug.
Kết Luận
Bài này đã hướng dẫn bạn cài đặt Minikube và làm quen kubectl cơ bản bước đệm cho các bài thực hành sau. Bạn giờ có thể tự tạo cluster local và tương tác với nó, để chuẩn bị cho CKAD. Tiếp theo, ở Bài 3: Quản Lý Pod Cơ Bản (Create, Delete, Describe), chúng ta sẽ đi sâu vào pods với các ví dụ YAML thực tế.





