Thủ phạm thực sự: sai lệch phiên bản Library, hệ điều hành khác nhau, biến môi trường không khớp. Dev test trên Ubuntu 22.04 với Python 3.11, Ops chạy trên CentOS 7 với Python 3.6 — không sập mới là lạ.
Docker xuất hiện như một chiếc Linh Hộp (Container). Thay vì chỉ gửi mỗi thanh kiếm (Source code), Docker cho phép bạn đóng gói luôn cả lò rèn, nguyên liệu, và nhiệt độ chuẩn vào trong một chiếc hộp thần kỳ — đi đâu mang theo, chạy ở đâu cũng y hệt.
- Build Once, Run Anywhere — một Image, chạy được trên mọi máy có Docker Engine
- Layer caching — nếu code thay đổi nhưng dependencies không đổi, Docker dùng lại layer cũ → build nhanh hơn nhiều
- Isolation — mỗi container là một vũ trụ riêng, không can thiệp vào nhau hay vào host system
Với Docker, bạn không gửi code — bạn gửi cả vũ trụ mà code đó cần để sống sót. Mọi môi trường đều y chang nhau, không còn ngoại lệ.
Nếu Docker tạo ra một người lính tinh nhuệ, thì khi ra chiến trường với hàng triệu lượt truy cập (biển người tràn vào), bạn không thể chỉ có một người lính. Bạn cần một đội quân vạn người — và cần một vị Tướng quân để chỉ huy.
Khi kẻ thù (Traffic) kéo đến đông nghịt, K8s phất cờ lệnh — lập tức hàng trăm phân thân của Container xuất hiện trong nháy mắt để chia lửa. Khi địch rút đi, Tướng quân thu quân về để tiết kiệm tài nguyên.
- HPA (Horizontal Pod Autoscaler) — tự động tăng số Pod khi CPU/Memory vượt ngưỡng
- Scale down khi traffic giảm — không lãng phí tài nguyên khi server nhàn rỗi
- Toàn bộ quá trình diễn ra tự động trong vài giây — không cần ai thức đêm canh
K8s có con mắt thần thông, liên tục giám sát Health Check từng Container. Nếu một Pod crash, K8s lập tức triệu hồi phân thân mới y hệt để thay thế ngay tại vị trí đó. Hệ thống đạt đến cảnh giới Bất Tử (High Availability).
- Liveness Probe — kiểm tra container còn sống không; nếu không → restart ngay
- Readiness Probe — chỉ gửi traffic vào container khi nó thực sự sẵn sàng phục vụ
- ReplicaSet đảm bảo số lượng Pod luôn đúng như Chiến Thư — thiếu thì bổ sung tức thì
K8s bày ra trận pháp điều phối thông minh — mọi yêu cầu từ phàm nhân được chia đều cho vạn Pod theo thuật toán round-robin. Không một phân thân nào bị tẩu hỏa nhập ma vì quá tải trong khi kẻ bên cạnh đang nhàn rỗi.
- Service — abstraction layer, clients không cần biết Pod nào đang chạy ở đâu
- Ingress — cổng thiên môn duy nhất từ Internet vào cluster, hỗ trợ TLS, routing theo path/host
- Service Mesh (Istio, Linkerd) — trận pháp nâng cao: mTLS, traffic shaping, circuit breaker
Một DevOps sư đạt cảnh giới cao thâm không ngồi canh từng chiếc hộp. Họ chỉ cần viết ra một tờ Chiến Thư (YAML) rồi giao cho Tướng quân K8s xử lý toàn bộ:
Sau khi gửi Chiến Thư này cho Tướng quân K8s, DevOps sư có thể thản nhiên ngồi uống trà — vạn hộp tự vận hành, tự chống đỡ trước bão táp người dùng, không cần nhấc một ngón tay.
Từ Docker đến Kubernetes là bước nhảy vọt về cảnh giới —
từ chăm sóc từng cá thể sang quản lý cả quần thể.
Đừng để hệ thống của bạn là một pháo đài cô độc — hãy biến nó thành Đại Trận Pháp Vạn Biến.