0

Bài 1. Docker đã tuyệt vời rồi, tại sao chúng ta vẫn cần Kubernetes?

"Nếu Docker đã giúp việc triển khai ứng dụng dễ dàng như vậy, tại sao gần như mọi công ty lớn vẫn sử dụng Kubernetes?"

Đây có lẽ là câu hỏi đầu tiên mà bất kỳ ai mới học Kubernetes đều từng thắc mắc.


1. Docker đã giải quyết vấn đề gì?

Hãy tưởng tượng bạn vừa hoàn thành một ứng dụng web.

Trước đây, để chạy ứng dụng trên máy khác, bạn phải lo đủ thứ:

  • Máy đã cài đúng phiên bản Java hay Node.js chưa?
  • Thiếu thư viện nào không?
  • Chạy được trên máy mình nhưng lại lỗi trên server.

Docker ra đời để giải quyết chính vấn đề đó.

Chỉ cần đóng gói ứng dụng thành một Docker Image, bạn có thể chạy nó ở bất kỳ đâu bằng một lệnh:

docker run my-app

Mọi thứ đều hoạt động giống nhau.

Thật tuyệt!


2. Nhưng chuyện gì xảy ra khi ứng dụng phát triển?

Ban đầu, bạn chỉ có 1 container.

Sau vài tháng, lượng người dùng tăng lên.

Bạn cần chạy 5 container để chịu tải.

Lúc này, hàng loạt câu hỏi mới xuất hiện:

  • Nếu một container bị crash thì ai khởi động lại?
  • Làm sao chia request đến đúng container?
  • Làm sao cập nhật phiên bản mới mà người dùng không bị gián đoạn?
  • Nếu một server hết tài nguyên thì container nên chạy ở đâu?
  • Nếu có 100 container thì quản lý bằng cách nào?

Docker vẫn chạy được container.

Nhưng Docker không được thiết kế để quản lý cả một hệ thống gồm hàng chục hay hàng trăm container.


3. Kubernetes xuất hiện để giải quyết điều đó

Nếu Docker giống như một chiếc xe, thì Kubernetes giống như một hệ thống điều phối giao thông.

Docker giúp bạn chạy một container.

Kubernetes giúp bạn quản lý hàng trăm hoặc hàng nghìn container một cách tự động.

Ví dụ:

  • Container bị lỗi → Kubernetes tự khởi động lại.
  • Lượng truy cập tăng → Kubernetes tự tạo thêm container.
  • Cập nhật phiên bản mới → Kubernetes triển khai dần dần, gần như không gián đoạn dịch vụ.
  • Một máy chủ gặp sự cố → Kubernetes tự chuyển ứng dụng sang máy khác.

Thay vì phải thao tác thủ công, bạn chỉ cần nói với Kubernetes:

"Tôi muốn luôn có 3 bản sao của ứng dụng này đang chạy."

Kubernetes sẽ tự đảm bảo điều đó.


4. Docker và Kubernetes không phải đối thủ

Đây là hiểu lầm rất phổ biến.

Nhiều người nghĩ:

Học Kubernetes thì không cần Docker nữa.

Thực tế hoàn toàn ngược lại.

Docker và Kubernetes bổ sung cho nhau:

  • Docker chịu trách nhiệm đóng gói ứng dụng.
  • Kubernetes chịu trách nhiệm triển khai và quản lý ứng dụng.

Bạn vẫn cần hiểu Docker trước khi học Kubernetes.


5. Chúng ta sẽ học gì trong series này?

Trong series này, bạn sẽ từng bước xây dựng kiến thức từ con số 0:

  • Kubernetes hoạt động như thế nào?
  • Pod là gì và tại sao Kubernetes không chạy trực tiếp Container?
  • Làm sao ứng dụng giao tiếp với nhau?
  • Cách lưu trữ dữ liệu, quản lý cấu hình và bảo mật.
  • Cách vận hành Kubernetes trong môi trường production với Helm, ArgoCD và GitOps.

Mỗi bài sẽ bắt đầu từ một vấn đề thực tế, sau đó cùng tìm hiểu cách Kubernetes giải quyết vấn đề đó.


6. Bài tiếp theo

Bây giờ chúng ta đã biết vì sao Kubernetes tồn tại.

Nhưng Kubernetes thực sự trông như thế nào? Nó gồm những thành phần gì và chúng phối hợp với nhau ra sao?

Đó sẽ là nội dung của Bài 2: Kubernetes hoạt động như thế nào? Hiểu kiến trúc chỉ trong 15 phút.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí