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
Kubernetes Là Gì?
Kubernetes (thường gọi là K8s) là một nền tảng mã nguồn mở để tự động hóa việc triển khai, mở rộng, và quản lý ứng dụng container hóa. Được phát triển bởi Google và hiện duy trì bởi CNCF, Kubernetes giúp quản lý hàng nghìn container trên nhiều máy chủ, đảm bảo ứng dụng luôn sẵn sàng và mở rộng linh hoạt. Đây là kỹ năng cốt lõi cho kỳ thi CKAD, tập trung vào domain “Core Concepts” (15%).

Khái Niệm Cluster Trong Kubernetes
Master Node
- Định nghĩa: Master Node là thành phần điều khiển của cluster, chịu trách nhiệm quản lý trạng thái và lịch trình công việc.
- Thành phần chính:
- API Server: Giao tiếp với
kubectl
và các thành phần khác. - etcd: Lưu trữ trạng thái cluster.
- Scheduler: Phân bổ pod lên các node.
- Controller Manager: Duy trì trạng thái mong muốn (VD: đảm bảo số lượng pod).
- API Server: Giao tiếp với
- Vai trò: Đảm bảo cluster hoạt động ổn định.
Worker Node
- Định nghĩa: Worker Node là nơi chạy các ứng dụng, chứa các pod và được quản lý bởi Master Node.
- Thành phần chính:
- Kubelet: Đảm bảo container trong pod chạy đúng.
- Kube-Proxy: Quản lý mạng và định tuyến traffic.
- Container Runtime: Chạy container (VD: Docker, containerd).
- Vai trò: Thực thi công việc (workload) của ứng dụng.
Pod
- Định nghĩa: Pod là đơn vị nhỏ nhất trong Kubernetes, chứa một hoặc nhiều container chia sẻ tài nguyên (network, storage).
- Đặc điểm:
- Một pod thường chạy một ứng dụng, nhưng có thể có sidecar container.
- Pod được tạo bởi các thành phần cao cấp hơn (VD: Deployment).
- Ví dụ thực tế: Một pod chạy ứng dụng web và container log collector.
Cài Đặt Môi Trường Thực Hành
- Công cụ cần thiết:
- Minikube: Tạo cluster Kubernetes cục bộ.
- kubectl: Dùng để tương tác với cluster.
- Cài đặt trên Ubuntu:
- Cài Minikube:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube
- Cài kubectl:
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
- Khởi động Minikube:
minikube start --driver=docker
Output:
😄 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 cluster:
kubectl cluster-info
Output:
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 Minikube:
Thực Hành Cơ Bản Với Pod
-
Tạo pod đơn giản:
- File
pod.yaml
:apiVersion: v1 kind: Pod metadata: name: nginx-pod labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80
- Áp dụng cấu hình:
kubectl apply -f pod.yaml
Output:
pod/nginx-pod created
- Kiểm tra trạng thái:
kubectl get pods
Output:
NAME READY STATUS RESTARTS AGE nginx-pod 1/1 Running 0 10s
- Xem chi tiết:
kubectl describe pod nginx-pod
Output (tóm tắt):
Name: nginx-pod Namespace: default Priority: 0 Node: minikube/192.168.49.2 Start Time: Wed, 30 Jul 2025 09:45:00 +0700 Labels: app=nginx Status: Running IP: 172.17.0.2 Containers: nginx: Image: nginx:latest Port: 80/TCP State: Running Ready: True
- Truy cập pod (qua port forwarding):
kubectl port-forward nginx-pod 8080:80
- Mở trình duyệt tại
http://localhost:8080
để thấy trang nginx.
- File
-
Xóa pod:
kubectl delete -f pod.yaml
Output:
pod "nginx-pod" deleted
Liên Hệ Với Kỳ Thi CKAD
- Domain liên quan: “Core Concepts” (15%).
- Kỹ năng cần thiết: Hiểu pod, node, và cách sử dụng
kubectl
để tạo, kiểm tra, và xóa tài nguyên. - Mẹo thi: Luyện viết YAML nhanh, kiểm tra trạng thái pod với
kubectl get pods
vàdescribe
, vì câu hỏi thường yêu cầu phân tích output.
Lưu Ý Quan Trọng
- Kiểm tra môi trường: Đảm bảo Minikube chạy ổn định trước khi thực hành.
- Hiểu YAML: Thực hành viết cấu hình thủ công, tránh dùng GUI trong thi.
- Lệnh cơ bản: Ghi nhớ
kubectl apply
,get
,describe
,delete
để tiết kiệm thời gian. - Debug: Sử dụng
kubectl logs
nếu pod gặp lỗi (sẽ học ở bài sau).
Kết Luận
Bài 1 đã giới thiệu Kubernetes, khái niệm cluster (Master Node, Worker Node, Pod), và thực hành cơ bản với pod trên Minikube. Đây là nền tảng cho các kỹ năng CKAD. Tiếp tục với Bài 2: Cài Đặt Và Quản Lý Cluster Với kubectl để mở rộng kiến thức.