☸️ Kubernetes Manifest Masterclass

Hiểu rõ "bản thiết kế" của mọi tài nguyên trong Kubernetes. Từ những dòng YAML cơ bản đến cấu hình Production-ready.

1. Manifest là gì?

Nó là một file YAML mô tả Desired State (Trạng thái mong muốn) của một tài nguyên. Bạn đưa Manifest cho K8s, K8s sẽ làm mọi cách để hiện thực hóa nó.

2. Tại sao dùng YAML?

Dễ đọc với con người, dễ quản lý bằng Git (GitOps). Quan trọng nhất, nó hỗ trợ cấu trúc phân cấp (nested) cực tốt cho các hệ thống phức tạp.

3. Triết lý Declarative

Thay vì ra lệnh "Hãy tạo 3 cái máy", bạn chỉ cần khai báo: "Tôi muốn có 3 cái máy". K8s sẽ tự động kiểm tra và bù đắp nếu thiếu.

🖼️ Visualization

Deployment
Quản lý Replicas & Rollout
POD
C1
POD
C1
Scaling...
  • 🚀 Pod: Đơn vị nhỏ nhất, chứa 1 hoặc nhiều container.
  • 🛡️ Deployment: "Sếp" của Pod, lo việc tự động hồi sinh Pod nếu chết và scale số lượng.
pod.yaml

Giải thích chi tiết

Di chuột hoặc click vào từng dòng code để xem giải thích kỹ thuật.
Đặc điểm Pod (Cơ bản) Deployment (Production)
Khả năng tự hồi phục Không. Chết là hết. Có. Tự động tạo lại Pod mới nếu lỗi.
Scaling Thủ công từng Pod. Dễ dàng tăng/giảm số lượng bằng replicas.
Cập nhật (Update) Phải xóa đi tạo lại. Hỗ trợ Zero-downtime Rollout.
Khi nào dùng? Test nhanh, chạy task ngắn hạn (Jobs). Luôn luôn dùng cho ứng dụng chạy 24/7.

⚠️ Lỗi phổ biến

Sai Tab/Khoảng trắng

YAML cực kỳ nhạy cảm với thụt lề. Chỉ cần thừa 1 space là Manifest vô giá trị.

Quên Selector

Deployment không tìm thấy Pod để quản lý vì matchLabels không khớp với labels của Pod.

✅ Best Practices

Luôn đặt Resource Limits

Giới hạn CPU/RAM để tránh 1 container "ăn" hết tài nguyên của cả Node.

Dùng Image Tag cụ thể

Tránh dùng :latest. Hãy dùng version cụ thể (vd: :v1.2.3) để đảm bảo tính ổn định.