Kubernetes là gì

0
56
Rate this post

Giới Thiệu Về Kubernetes

Kubernetes là một nền tảng mã nguồn mở, linh hoạt và có khả năng mở rộng để quản lý các ứng dụng và dịch vụ được đóng gói. Nó giúp tạo điều kiện thuận lợi cho việc cấu hình và triển khai ứng dụng tự động. Kubernetes là một hệ sinh thái lớn đang phát triển nhanh chóng, với nhiều dịch vụ, hỗ trợ và công cụ có sẵn rộng rãi.

Quay Ngược Thời Gian

Để hiểu rõ tại sao Kubernetes lại hữu ích, chúng ta hãy nhìn lại quá trình phát triển ứng dụng:

Evolution of Deployment

  • Thời đại triển khai theo cách truyền thống: Ban đầu, các ứng dụng chạy trên các máy chủ vật lý. Tuy nhiên, việc không xác định được ranh giới tài nguyên gây ra sự cố trong phân bổ tài nguyên. Ảnh hưởng xấu nhất là khi nhiều ứng dụng chạy cùng trên cùng một máy chủ, dẫn đến việc một số ứng dụng chiếm toàn bộ tài nguyên và làm giảm hiệu suất các ứng dụng khác. Một giải pháp là chạy từng ứng dụng trên các máy chủ riêng biệt, nhưng sẽ tốn kém và không tối ưu.

  • Thời đại triển khai ảo hóa: Ảo hóa đã được giới thiệu như là một giải pháp, cho phép chạy nhiều Máy ảo (VM) trên cùng một máy chủ. Mỗi VM chứa một ứng dụng riêng biệt, đảm bảo tính cô lập và bảo mật.

  • Thời đại triển khai Container: Các container giống như VM, nhưng có tính cô lập để chia sẻ hệ điều hành (HĐH) giữa các ứng dụng. Chúng nhẹ nhàng hơn VM và có thể di chuyển dễ dàng trên nền tảng cloud hoặc các phiên bản HĐH khác.

Các container ngày càng phổ biến vì nhiều lợi ích mà chúng mang lại, bao gồm:

  • Agile deployment: tạo container image dễ dàng hơn so với VM image, giúp việc tạo mới và triển khai ứng dụng trở nên linh hoạt và hiệu quả.

  • Continuous development, integration, and deployment: cung cấp khả năng build và triển khai liên tục, với khả năng rollback nhanh chóng.

  • DevOps separation: tách biệt việc tạo image của ứng dụng và việc triển khai, tạo sự linh hoạt cho các ứng dụng.

  • Monitoring và observability: hiển thị thông tin về hệ điều hành, trạng thái ứng dụng và các tín hiệu khác.

  • Consistency across environments: chạy ứng dụng một cách nhất quán trên nhiều môi trường phát triển, kiểm thử và production.

  • Portability across different platforms: chạy trên nhiều loại hệ điều hành và cloud.

  • Application-centric management: tạo sự trừu tượng giữa ứng dụng và hệ điều hành.

  • Elasticity and scalability: tạo linh hoạt và quản lý ứng dụng theo mô hình microservices.

  • Resource isolation and efficient utilization: dự đoán hiệu năng và sử dụng tài nguyên hiệu quả.

Tại Sao Bạn Cần Kubernetes và Nó Có Thể Làm Gì?

Các container là một cách tốt để đóng gói và chạy ứng dụng. Trên môi trường production, việc quản lý các container để đảm bảo hoạt động liên tục là rất quan trọng. Ví dụ, nếu một container bị tắt, cần có một container khác sẵn sàng để khởi động lên. Điều này dễ dàng hơn khi có sự hỗ trợ của một hệ thống quản lý.

Đó là lý do tại sao Kubernetes ra đời. Kubernetes cung cấp một framework mạnh mẽ để chạy các hệ thống phân tán. Nó có khả năng mở rộng và chuyển đổi dự phòng cho ứng dụng của bạn, cung cấp các mẫu triển khai và nhiều tính năng hơn nữa. Ví dụ, Kubernetes có thể dễ dàng quản lý một triển khai canary cho hệ thống của bạn.

Kubernetes cung cấp cho bạn:

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

  • Điều phối bộ nhớ: Kubernetes cho phép bạn mount một hệ thống lưu trữ của bạn, bao gồm local storage và các dịch vụ lưu trữ công cộng.

  • Tự động triển khai và rollback: Bạn có thể mô tả trạng thái mong muốn cho các container và Kubernetes có thể chuyển trạng thái thực tế sang trạng thái mong muốn với mức độ kiểm soát dễ dàng. Ví dụ, Kubernetes có thể tự động tạo mới container, xoá container hiện có và chuyển tất cả resource sang container mới.

  • Đóng gói tự động: Bạn cung cấp cho Kubernetes một cụm các node mà nó có thể sử dụng để chạy các container. Kubernetes biết mỗi container cần bao nhiêu CPU và bộ nhớ, và nó sẽ điều phối các container vào các node để tận dụng tốt nhất resource.

  • Tự phục hồi: Kubernetes khởi động lại các container bị lỗi, thay thế những container không phản hồi và không cho client truy cập container cho đến khi container đã sẵn sàng hoạt động.

  • Quản lý cấu hình và bảo mật: Kubernetes cho phép bạn lưu trữ và quản lý thông tin nhạy cảm như mật khẩu, token OAuth và SSH key. Bạn có thể triển khai và cập nhật secret và cấu hình ứng dụng mà không cần build lại container image.

Kubernetes Không Phải Là Gì?

Kubernetes không phải là một hệ thống PaaS truyền thống toàn diện. Thay vì hoạt động ở tầng phần cứng như các hệ thống truyền thống, Kubernetes hoạt động ở tầng container và cung cấp một số tính năng chung cho các dịch vụ PaaS, như triển khai, mở rộng, cân bằng tải, ghi nhật ký và giám sát. Tuy nhiên, Kubernetes không phải là một cấu trúc nguyên khối và các tính năng này là tùy chọn và có thể được dùng thay thế.

Kubernetes không:

  • Giới hạn các loại ứng dụng được hỗ trợ. Kubernetes hỗ trợ một loạt công việc đa dạng, bao gồm cả stateless, stateful và xử lý dữ liệu.

  • Đảm nhận việc triển khai và xây dựng ứng dụng. Quy trình CI/CD được xác định bởi tổ chức và yêu cầu kỹ thuật.

  • Cung cấp các dịch vụ cấp ứng dụng như middleware, framework xử lý dữ liệu, cơ sở dữ liệu, bộ nhớ cache và hệ thống lưu trữ của cluster. Nhưng các thành phần này có thể được chạy trên Kubernetes và có thể được truy cập bởi các ứng dụng chạy trên Kubernetes thông qua các cơ chế di động.

  • Bắt buộc các giải pháp logging, monitoring và alerting. Kubernetes cung cấp sự tích hợp cơ bản cho mục đích demo và thu thập dữ liệu.

  • Bắt buộc sử dụng một cấu hình ngôn ngữ/hệ thống cụ thể. Kubernetes cung cấp một API khai báo cho phép khai báo linh hoạt.

  • Cung cấp quản lý toàn diện, bảo trì và tự phục hồi.

Ngoài ra, Kubernetes không chỉ là một hệ thống điều phối đơn thuần. Thực tế, nó loại bỏ sự cần thiết của việc điều phối. Kubernetes bao gồm một tập các quy trình kiểm soát độc lập, liên kết và liên tục điều khiển trạng thái hiện tại theo trạng thái mong muốn. Vì vậy, không quan trọng làm thế nào bạn đi từ điểm A đến điểm C. Nó cũng không yêu cầu kiểm soát tập trung. Điều này tạo ra một hệ thống dễ sử dụng, mạnh mẽ, linh hoạt và có thể mở rộng.

Có Gì Tiếp Theo?

  • Để biết thêm về các thành phần của Kubernetes, truy cập vào trang chủ của Kubernetes.

  • Sẵn sàng bắt đầu? Hãy truy cập Dnulib để tìm hiểu thêm về Kubernetes và bắt đầu hành trình của bạn với nền tảng này.

Được chỉnh sửa bởi Dnulib. Xem thêm tại dnulib.edu.vn