Bài 1: Kubernetes là gì & Tổng quan
Kubernetes (K8s) là gì?
Kubernetes là container orchestrator — nó quản lý hàng trăm/thousands container chạy trên nhiều máy. Thay vì phải tự tay docker run trên từng server, K8s giúp:
- Lập lịch (Scheduling): Tự chọn máy nào chạy container nào
- Tự phục hồi (Self-healing): Container chết → tự restart; node chết → chuyển container sang node khác
- Scaling: Tăng/giảm số lượng container theo traffic
- Service Discovery & Load Balancing: Tự phân phối traffic giữa các container
- Rolling Updates: Cập nhật app không downtime
- Quản lý config & secret: Tách biệt cấu hình khỏi code
Kiến trúc cơ bản
┌──────────────────────────────────────────┐
│ K8s Cluster │
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Control │ │ Node 1 │ │
│ │ Plane │◄──►│ (Worker) │ │
│ │ │ │ │ │
│ │ - API Server│ │ - Pod A │ │
│ │ - etcd │ │ - Pod B │ │
│ │ - Scheduler │ │ - kubelet │ │
│ │ - C-M │ │ - kube-proxy│ │
│ └─────────────┘ └─────────────┘ │
│ ... │
│ ┌─────────────┐ │
│ │ Node N │ │
│ │ (Worker) │ │
│ └─────────────┘ │
└──────────────────────────────────────────┘
Control Plane (não của cluster)
| Thành phần | Vai trò |
|---|---|
| API Server | Cổng giao tiếp duy nhất. Mọi lệnh kubectl đều qua đây |
| etcd | Database lưu toàn bộ trạng thái cluster (key-value store) |
| Scheduler | Quyết định Pod chạy trên Node nào |
| Controller Manager | Chạy các vòng loop kiểm tra trạng thái thực tế vs mong muốn |
Worker Nodes (tay chân)
| Thành phần | Vai trò |
|---|---|
| kubelet | Agent chạy trên mỗi node, nhận lệnh từ API Server, quản lý Pod |
| kube-proxy | Network proxy, xử lý routing traffic đến Pod |
| Container Runtime | containerd / CRI-O — thứ thực sự chạy container |
Các khái niệm cốt lõi (sẽ học sâu từng bài)
| Khái niệm | Giải thích ngắn |
|---|---|
| Pod | Đơn vị nhỏ nhất. 1 Pod = 1+ container share network/storage |
| Deployment | Khai báo "tôi muốn N Pod chạy app X". Tự quản lý ReplicaSet |
| Service | Địa chỉ ổn định để truy cập Pod (Pod IP thay đổi khi restart) |
| ConfigMap / Secret | Tách config / password khỏi image |
| Ingress | Route HTTP/HTTPS từ ngoài vào Service |
| Namespace | Phân vùng ảo trong cluster (dev, staging, prod...) |
| Volume / PV / PVC | Lưu trữ dữ liệu bền vững qua restart |
Các cách chạy K8s
| Môi trường | Dùng cho | Công cụ |
|---|---|---|
| Local | Học, dev | minikube, kind, k3d, Docker Desktop |
| VM tự dựng | Lab thực tế | kubeadm |
| Cloud Managed | Production | GKE, EKS, AKS |
→ Lộ trình của bác: Học khái niệm → Lab trên VM với kubeadm → Lab trên GKE.
⏭️ Bài tiếp: https://viblo.asia/p/bai-2-thiet-lap-k8s-lab-tren-vm-voi-kubeadm-K9Vy89BqLQR — Dựng K8s cluster bằng kubeadm trên VM
All rights reserved