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

⚓ Bài 1: Giới Thiệu Kubernetes

⏱️ Thời gian đọc: 15 phút | 📚 Độ khó: Dễ

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

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ạ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 đề:

💡 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 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.

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