K8s là gì?

Tháng 2 10, 2025

Kubernetes (K8s) là một nền tảng mã nguồn mở, có khả năng chuyển đổi, mở rộng để quản lý các ứng dụng được đóng gói (container) và các dịch vụ, giúp thuận lợi trong việc cấu hình và tự động hóa việc triển khai ứng dụng. Kubernetes là một hệ sinh thái lớn và phát triển nhanh chóng. Các dịch vụ, hỗ trợ và công cụ có sẵn rộng rãi.

Kubernetes có nguồn gốc từ tiếng Hy Lạp, có nghĩa là người lái tàu hoặc hoa tiêu. Google mở mã nguồn Kubernetes từ năm 2014. Kubernetes xây dựng dựa trên hơn một thập kỷ kinh nghiệm mà Google có được về việc vận hành một khối lượng lớn workload trong thực tế, kết hợp với các ý tưởng và thực tiễn tốt nhất từ cộng đồng.

Sự phát triển của việc triển khai ứng dụng:

Triển khai truyền thống: Ban đầu, các ứng dụng được chạy trên các máy chủ vật lý. Việc xác định ranh giới tài nguyên cho các ứng dụng trong máy chủ vật lý là không thể, dẫn đến sự phân bổ tài nguyên không hiệu quả.

Triển khai ảo hóa: Ảo hóa cho phép chạy nhiều Máy ảo (VM) trên CPU của một máy chủ vật lý. Ảo hóa cho phép các ứng dụng được cô lập giữa các VM và cung cấp mức độ bảo mật vì thông tin của một ứng dụng không thể được truy cập tự do bởi một ứng dụng khác. Ảo hóa cho phép sử dụng tốt hơn các tài nguyên trong một máy chủ vật lý và cho phép khả năng mở rộng tốt hơn.

Triển khai Container: Container tương tự như VM, nhưng chúng có tính cô lập để chia sẻ Hệ điều hành (HĐH) giữa các ứng dụng. Do đó, container được coi là nhẹ (lightweight). Tương tự như VM, một container có hệ thống tệp (filesystem), CPU, bộ nhớ, process space, v.v. Container mang lại nhiều lợi ích như: tạo mới và triển khai ứng dụng nhanh chóng, phát triển và tích hợp liên tục, phân biệt giữa Dev và Ops, khả năng quan sát hệ thống và ứng dụng, tính nhất quán về môi trường, tính khả chuyển, quản lý tập trung ứng dụng, microservices phân tán, cô lập tài nguyên và sử dụng tài nguyên hiệu quả.

Tại sao cần Kubernetes?

Trong môi trường production, cần quản lý các container chạy các ứng dụng và đảm bảo rằng không có khoảng thời gian downtime. Ví dụ, nếu một container bị tắt đi, một container khác cần phải khởi động lên. Kubernetes cung cấp một framework để chạy các hệ phân tán một cách mạnh mẽ. Nó đảm nhiệm việc nhân rộng và chuyển đổi dự phòng cho ứng dụng, cung cấp các mẫu deployment.

Kubernetes cung cấp:

  • Service discovery và cân bằng tải: Kubernetes có thể expose một container sử dụng DNS hoặc địa chỉ IP của riêng nó. Nếu lượng traffic truy cập đến một container cao, Kubernetes có thể cân bằng tải và phân phối lưu lượng mạng để việc triển khai được ổn định.

  • Điều phối bộ nhớ: Kubernetes cho phép tự động mount một hệ thống lưu trữ mà bạn chọn.

  • Tự động rollouts và rollbacks: Kubernetes có thể thay đổi trạng thái thực tế sang trạng thái mong muốn với tần suất được kiểm soát.

  • Đóng gói tự động: Kubernetes có thể điều phối các container đến các node để tận dụng tốt nhất các resource.

  • Tự phục hồi: Kubernetes khởi động lại các containers bị lỗi, thay thế các container, xóa các container không phản hồi cấu hình health check và không cho client biết đến chúng cho đến khi chúng sẵn sàng hoạt động.

  • Quản lý cấu hình và bảo mật: Kubernetes cho phép lưu trữ và quản lý các thông tin nhạy cảm.

Kubernetes không phải là gì?

Kubernetes không phải là một hệ thống PaaS (Nền tảng như một Dịch vụ) truyền thống, toàn diện. Nó hoạt động ở tầng container chứ không phải ở tầng phần cứng. Kubernetes:

  • Không giới hạn các loại ứng dụng được hỗ trợ.
  • Không triển khai mã nguồn và không build ứng dụng.
  • Không cung cấp các service ở mức ứng dụng, như middleware.
  • Không bắt buộc các giải pháp ghi lại nhật ký (logging), giám sát (monitoring) hoặc cảnh báo (alerting).
  • Không cung cấp, không bắt buộc một cấu hình ngôn ngữ/hệ thống.
  • Không cung cấp cũng như áp dụng bất kỳ cấu hình toàn diện, bảo trì, quản lý hoặc hệ thống tự phục hồi.
  • Không phải là một hệ thống điều phối đơn thuần. Nó loại bỏ sự cần thiết của việc điều phối.

Leave A Comment

Create your account