Kubernetes (phát âm "CUBE-A-NET-IS") là nền tảng mã nguồn mở giúp quản lý ứng dụng container như Docker. Dù bạn muốn tự động hóa hay mở rộng các container này trên nhiều host, Kubernetes có thể tăng tốc triển khai. Để làm điều đó, nó có thể dùng thành phần nội bộ như Kubernetes API hoặc extension thứ ba chạy trên Kubernetes.
Bài viết này giúp bạn hiểu khái niệm cơ bản của Kubernetes và tại sao nó gây chuyển dịch địa chất trong thị trường server, với vendor lẫn cloud provider như Azure và Google Cloud cung cấp dịch vụ Kubernetes.
Kubernetes: Lịch sử ngắn gọn
Kubernetes là một trong những món quà của Google cho cộng đồng mã nguồn mở. Nền tảng container là một phần của Borg, dự án nội bộ Google hơn một thập kỷ. Borg cho Google quản lý hàng trăm thậm chí hàng nghìn task (gọi là "Borglets") từ các ứng dụng khác nhau trên các cụm. Mục tiêu là sử dụng hiệu quả máy (và máy ảo) đồng thời đảm bảo tính sẵn sàng cao của tính năng runtime.
Kiến trúc tương tự phổ biến với các công ty khác tìm cách hiệu quả đảm bảo sẵn sàng cao. Vào khoảng 2015, ngay khi Kubernetes 1.0 ra mắt, Google từ bỏ quyền kiểm soát công nghệ. Kubernetes hiện thuộc quỹ Cloud Native Computing Foundation (CNCF), bản thân là một phần của Linux Foundation.
Cách Kubernetes hoạt động
Mượn ý tưởng dự án Borg, "Borglets" nhường chỗ cho "pods", là đơn vị lập lịch chứa container. Về cơ bản, chúng có địa chỉ IP riêng, xuất hiện khi container cần CPU, bộ nhớ hoặc lưu trữ.
Pod đảm bảo sẵn sàng cao bằng cân bằng tải traffic theo kiểu round-robin. Hơn nữa, chúng nằm trong máy (hoặc máy ảo) gọi là "worker nodes", còn gọi là "minions". Từ đây, "master node" điều khiển toàn bộ cụm bằng cách điều phối container hóa dùng Kubernetes API. Docker có thể chạy trong mỗi worker node nơi nó tải image và khởi động container.
Để lấy kết nối API tại cụm Kubernetes, cú pháp CLI gọi là kubectl được dùng. Đây là lệnh rất quan trọng vì nó đơn độc chạy tất cả hướng dẫn mà Master node phục vụ cho worker node. Làm chủ kubectl đòi hỏi chút học tập, nhưng một khi học xong, bạn có thể bắt đầu tận dụng cụm Kubernetes. Kubernetes cũng như Docker được viết bằng ngôn ngữ Go.
Ứng dụng
Kubernetes có thể giảm chi phí server và trung tâm dữ liệu mạnh mẽ nhờ hiệu suất cao sử dụng máy. Một số ứng dụng phổ biến của Kubernetes bao gồm:
- Quản lý application server. Hầu hết application server yêu cầu bảo mật, quản lý cấu hình, cập nhật và hơn thế, có thể chạy dùng Kubernetes.
- Rollout và rollback tự động. Với Kubernetes, bạn không phải lo rollout hay rollback sản phẩm trên nhiều end node.
- Triển khai app stateless. Web app giờ điều khiển từ xa. Ví dụ, Kubernetes giúp chạy server Nginx dùng triển khai stateless app.
- Triển khai app stateful. Kubernetes có thể chạy database MySQL.
- Lưu trữ API object. Cho nhu cầu lưu trữ khác nhau, Kubernetes đảm bảo lưu trữ lý tưởng vì dùng nguyên tắc container.
- Sẵn sàng out-of-the-box. Kubernetes rất hữu ích cho ứng dụng out-of-the-box như service discovery, logging, monitoring và authentication.
- Ứng dụng IoT. Kubernetes tìm thấy việc sử dụng tăng dần trong IoT nhờ khả năng mở rộng khổng lồ.
- Chạy ở đâu cũng được. Bạn có thể chạy Kubernetes ở đâu, kể cả trong vali.
Tóm lại
Mục tiêu của Kubernetes là tận dụng tài nguyên tính toán đến mức tối đa. Vì bạn có thể điều phối container trên nhiều host, end node sẽ không bao giờ gặp vấn đề tài nguyên hay failure. Nó giúp scale tự động vì bạn chỉ cần cho lệnh một lần từ Master node, và scale ứng dụng không kém gì cách mạng.
Để tìm hiểu thêm về Kubernetes, truy cập trang web chính thức chứa hướng dẫn.