← Về danh sách bài học
Bài 1/25
⚓ Bài 1: Giới Thiệu Kubernetes
🎯 Sau bài học này, bạn sẽ:
- Hiểu Kubernetes là gì và tại sao nó quan trọng
- Biết lịch sử phát triển của K8s
- Hiểu kiến trúc tổng quan của Kubernetes cluster
- Phân biệt các thành phần chính: Master, Worker, Pod
1. Kubernetes Là Gì?
Kubernetes (viết tắt K8s - vì có 8 chữ giữa K và s) là một nền tảng mã nguồn mở để tự động hóa việc triển khai, scale và quản lý các ứng dụng container.
📌 Thông tin nhanh:
• Tên: Kubernetes (tiếng Hy Lạp: "người lái tàu")
• Phát triển: Google, nay thuộc CNCF
• Năm ra đời: 2014
• Website: kubernetes.io
• Tên: Kubernetes (tiếng Hy Lạp: "người lái tàu")
• Phát triển: Google, nay thuộc CNCF
• Năm ra đời: 2014
• Website: kubernetes.io
Tại sao gọi là K8s?
Trong ngành IT, người ta hay viết tắt các từ dài bằng cách lấy chữ đầu, số chữ giữa, và chữ cuối. Kubernetes → Kubernetes → K8s (8 ký tự ở giữa).
2. Tại Sao Cần Kubernetes?
🐳 Vấn đề với Docker thông thường
Docker giúp đóng gói ứng dụng thành container, nhưng khi bạn có hàng chục, hàng trăm containers, bạn sẽ gặp vấn đề:
- Làm sao để containers chạy trên nhiều máy chủ?
- Container chết thì ai khởi động lại?
- Làm sao để cân bằng tải (load balancing)?
- Làm sao để update mà không downtime?
💡 Kubernetes giải quyết tất cả!
K8s là "bộ não" điều phối containers, tự động xử lý các vấn đề trên.
K8s là "bộ não" điều phối containers, tự động xử lý các vấn đề trên.
✅ K8s mang lại gì?
| Tính năng | Mô tả |
|---|---|
| Self-healing | Tự restart containers khi fail |
| Auto-scaling | Tự tăng/giảm số lượng containers theo tải |
| Load Balancing | Phân phối traffic đều giữa các containers |
| Rolling Updates | Update app không downtime |
| Secret Management | Quản lý passwords, tokens an toàn |
3. Kiến Trúc Kubernetes
Một Kubernetes cluster gồm 2 loại nodes chính:
┌─────────────────────────────────────────────────────────────┐
│ KUBERNETES CLUSTER │
├─────────────────────┬───────────────────────────────────────┤
│ CONTROL PLANE │ WORKER NODES │
│ (Master Node) │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐│
│ ┌───────────────┐ │ │ Node 1 │ │ Node 2 │ │ Node 3 ││
│ │ API Server │ │ │┌───────┐│ │┌───────┐│ │┌───────┐││
│ │ Scheduler │──┼─▶││ Pod ││ ││ Pod ││ ││ Pod │││
│ │ Controller │ │ │└───────┘│ │└───────┘│ │└───────┘││
│ │ etcd │ │ │┌───────┐│ │┌───────┐│ │ ││
│ └───────────────┘ │ ││ Pod ││ ││ Pod ││ │ ││
│ │ │└───────┘│ │└───────┘│ │ ││
│ │ └─────────┘ └─────────┘ └─────────┘│
└─────────────────────┴───────────────────────────────────────┘
🧠 Control Plane (Master)
| Thành phần | Chức năng |
|---|---|
| API Server | Cổng giao tiếp với cluster (kubectl gọi vào đây) |
| Scheduler | Quyết định Pod chạy trên Node nào |
| Controller Manager | Đảm bảo trạng thái mong muốn (desired state) |
| etcd | Database lưu trữ toàn bộ config cluster |
💪 Worker Nodes
| Thành phần | Chức năng |
|---|---|
| kubelet | Agent chạy trên mỗi node, quản lý Pods |
| kube-proxy | Quản lý network rules, load balancing |
| Container Runtime | Docker/containerd - chạy containers |
4. Các Khái Niệm Cơ Bản
📦 Pod
Pod là đơn vị nhỏ nhất trong K8s. Một Pod chứa 1 hoặc nhiều containers chạy cùng nhau.
# Ví dụ Pod đơn giản
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: my-app
image: nginx:latest
ports:
- containerPort: 80
🚀 Deployment
Quản lý việc tạo và update Pods. Đảm bảo luôn có đủ số lượng Pods chạy.
🔗 Service
Expose Pods ra network, tạo địa chỉ IP ổn định để truy cập.
⚠️ Lưu ý quan trọng:
Đừng nhầm lẫn Pod với Container! Một Pod có thể chứa nhiều containers, và chúng chia sẻ network/storage.
Đừng nhầm lẫn Pod với Container! Một Pod có thể chứa nhiều containers, và chúng chia sẻ network/storage.
5. Kubernetes vs Docker Swarm
| Tiêu chí | Kubernetes | Docker Swarm |
|---|---|---|
| Độ phức tạp | Cao hơn, nhiều khái niệm | Đơn giản hơn |
| Scaling | Mạnh mẽ, HPA tự động | Cơ bản |
| Cộng đồng | Rất lớn (CNCF) | Nhỏ hơn |
| Production | Tiêu chuẩn industry | Ít phổ biến |
| Cloud support | AWS EKS, GKE, AKS | Hạn chế |
📝 Tóm Tắt Bài Học
- Kubernetes (K8s) là nền tảng orchestration containers phổ biến nhất
- Giải quyết vấn đề: scaling, self-healing, load balancing, rolling updates
- Control Plane: API Server, Scheduler, Controller, etcd
- Worker Node: kubelet, kube-proxy, container runtime
- Pod là đơn vị nhỏ nhất trong K8s