# Sun K8S K8S là gì --------- **Kubernetes (K8S)** là một hệ thống mã nguồn mở được sử dụng rộng rãi để tự động hóa việc triển khai, mở rộng và quản lý các ứng dụng được đóng gói trong container. Nó cung cấp một nền tảng mạnh mẽ và linh hoạt để xây dựng và vận hành các ứng dụng phân tán trên quy mô lớn. **Kubernetes** (thường viết tắt là **K8S**) là một nền tảng mã nguồn mở giúp tự động hóa việc triển khai, quản lý và mở rộng các ứng dụng container hóa. Được phát triển ban đầu bởi Google và hiện đang được duy trì bởi Cloud Native Computing Foundation (CNCF), Kubernetes đã trở thành tiêu chuẩn cho việc quản lý container trên môi trường production. Kubernetes cung cấp các công cụ mạnh mẽ giúp quản lý vòng đời của container, từ việc tạo, triển khai, cân bằng tải, cho đến việc khôi phục khi gặp sự cố. ```{thumbnail} ../../_static/img/ske/sun-k8s-overview-1.jpeg :width: 65% :alt: Image :align: center ``` **Các thành phần chính của Kubernetes bao gồm:** * **Control Plane:** Chịu trách nhiệm quản lý toàn bộ cụm Kubernetes, bao gồm việc theo dõi các node và điều phối tài nguyên. * **Node:** Các máy chủ thực hoặc ảo, nơi các container được triển khai và thực thi. * **Pod:** Đơn vị triển khai nhỏ nhất trong Kubernetes, chứa một hoặc nhiều container. * **Service:** Định danh một tập hợp các Pod để cân bằng tải và giúp giao tiếp ổn định giữa các Pod với nhau. * **Namespace:** Không gian tên logic để tổ chức và phân vùng tài nguyên trong cụm Kubernetes. **Tại sao Kubernetes lại quan trọng?** * **Quản lý container hiệu quả:** Kubernetes tự động hóa nhiều tác vụ phức tạp liên quan đến việc quản lý container, như lên lịch, điều phối tài nguyên, cân bằng tải và tự động mở rộng quy mô. * **Tăng tính sẵn sàng:** Kubernetes giúp đảm bảo các ứng dụng luôn hoạt động ổn định bằng cách tự động khởi động lại các container bị lỗi, cân bằng tải giữa các container và thực hiện tự động phục hồi. * **Môi trường triển khai linh hoạt:** Kubernetes cho phép triển khai các ứng dụng trên nhiều nền tảng khác nhau, từ các máy chủ vật lý đến các đám mây công cộng và tư nhân. * **Cộng đồng lớn mạnh:** Kubernetes có một cộng đồng người dùng và nhà phát triển rất lớn, giúp hỗ trợ và phát triển hệ thống một cách nhanh chóng. ### Phân biệt các mô hình triển khai Kubernetes Có ba mô hình triển khai Kubernetes phổ biến: 1. **Kubernetes tự quản lý (Self-Managed Kubernetes)(Vanilla Kubernetes):** * **Mô tả:** Đây là mô hình mà doanh nghiệp tự cài đặt và quản lý toàn bộ các thành phần của Kubernetes trên cơ sở hạ tầng của mình. Tất cả các tác vụ như cài đặt, cấu hình, cập nhật, giám sát và bảo trì đều do đội ngũ nội bộ phụ trách. * **Ưu điểm:** Tính linh hoạt cao, toàn quyền kiểm soát đối với hệ thống, có thể tùy chỉnh theo nhu cầu cụ thể. * **Nhược điểm:** Đòi hỏi đội ngũ chuyên môn cao, tốn nhiều thời gian và nguồn lực để duy trì và vận hành. 2. **Kubernetes quản lý một phần (Managed Kubernetes):** * **Mô tả:** Các dịch vụ Kubernetes quản lý một phần, trong đó nhà cung cấp dịch vụ (ví dụ: Amazon EKS, Google GKE, Azure AKS) chịu trách nhiệm quản lý Control Plane, trong khi người dùng quản lý Node và các tài nguyên bên trong cụm. * **Ưu điểm:** Giảm tải việc quản lý Control Plane, dễ dàng mở rộng và nâng cấp, không cần phải lo lắng về việc quản lý phiên bản Kubernetes. * **Nhược điểm:** Ít linh hoạt hơn so với tự quản lý, vẫn cần một số kiến thức về Kubernetes để quản lý Node và các thành phần liên quan. 3. **Kubernetes hoàn toàn quản lý (Fully Managed Kubernetes):** * **Mô tả:** Mô hình này, nhà cung cấp dịch vụ (ví dụ: AWS Fargate cho EKS, Google Autopilot) quản lý toàn bộ cụm Kubernetes, bao gồm cả Control Plane và Node, người dùng chỉ cần triển khai các ứng dụng container mà không cần quan tâm đến việc quản lý hạ tầng. * **Ưu điểm:** Đơn giản hóa hoàn toàn việc triển khai và quản lý, thích hợp cho các doanh nghiệp không muốn hoặc không có khả năng quản lý hạ tầng. * **Nhược điểm:** Ít quyền kiểm soát, chi phí có thể cao hơn, phụ thuộc hoàn toàn vào nhà cung cấp dịch vụ. Dịch vụ Sun Kubernetes Spinner của Sunteco ------------------------------------------ Sun Kubernetes Spinner dựa trên nền tảng mã nguồn mở K8S giúp tự động hoá triển khai, nhân rộng và quản lý các ứng dụng container. Sun Kubernetes Spinner tích hợp đầy đủ các thành phần: Container Orchestration, Storage, Networking, Security, PaaS cung cấp cho khách hàng môi trường tốt nhất để phát triển và triển khai ứng dụng trên Cloud. Với Sun Kubernetes Spinner, **Sunteco Cloud quản trị toàn bộ thành phần control-planes, người sử dụng sẽ triển khai và quản trị các Worker Nodes**. Sun Kubernetes Spinner giúp người sử dụng tập trung vào việc triển khai ứng dụng mà không cần tốn nguồn lực vào việc quản trị K8S cluster. ### Những điểm nổi bật của Sun Kubernetes Spinner (SKS) Sun Kubernetes Spinner cung cấp một môi trường Kubernetes được quản lý bởi nhà cung cấp dịch vụ, giúp người dùng tập trung vào việc triển khai và quản lý các ứng dụng thay vì quản lý hạ tầng Kubernetes. Dưới đây là các đặc trưng và lợi ích chính của Sun Kubernetes Spinner: #### Tự Động Quản Lý Control Plane * Trong dịch vụ SKS, Control Plane được tự động cài đặt, cấu hình và quản lý bởi nhà cung cấp dịch vụ. Người dùng không cần lo lắng về việc duy trì, cập nhật hay vá lỗi cho Control Plane. * Giảm tải công việc quản lý cho đội ngũ kỹ thuật, đảm bảo Control Plane luôn hoạt động ổn định và an toàn, tự động cập nhật phiên bản mới nhất. #### **Tích Hợp Bảo Mật Mặc Định** * SKS được đi kèm với các thiết lập bảo mật mặc định, bao gồm cả các chứng chỉ SSL/TLS, kiểm soát truy cập (RBAC), và các chính sách bảo mật mạng. * Tăng cường bảo mật cho cụm K8S mà không cần cấu hình phức tạp từ phía người dùng, bảo vệ các ứng dụng và dữ liệu khỏi các mối đe dọa tiềm ẩn. #### **Tự Động Mở Rộng Node Group** * SKS có khả năng tự động mở rộng (auto-scaling) các Node Group dựa trên tải công việc hiện tại. Khi nhu cầu tài nguyên tăng cao, các node mới sẽ tự động được thêm vào cụm để đáp ứng. * Tối ưu hóa sử dụng tài nguyên, đảm bảo ứng dụng luôn có đủ tài nguyên để hoạt động, giảm thiểu thời gian chết do thiếu tài nguyên. #### **Khả Năng Tự Động Khôi Phục (Auto-Healing)** * SKS có tính năng tự động khôi phục khi xảy ra sự cố, bao gồm việc phát hiện và thay thế các node bị lỗi hoặc các Pod gặp vấn đề. * Đảm bảo tính liên tục và ổn định của dịch vụ, giảm thiểu sự cố mà không cần can thiệp thủ công, cải thiện độ tin cậy của hệ thống. #### **Tích Hợp Sẵn Các Dịch Vụ Add-on** * Tiết kiệm thời gian cài đặt và cấu hình các công cụ cần thiết, đảm bảo các thành phần phụ trợ luôn tương thích và hoạt động mượt mà với Kubernetes. #### **Khả Năng Tương Thích và Mở Rộng Cao** * SKS hỗ trợ hầu hết các công cụ và framework phổ biến như Helm, Istio, Prometheus, giúp dễ dàng mở rộng và tùy chỉnh hệ thống theo nhu cầu cụ thể. * Tăng tính linh hoạt và khả năng mở rộng của hệ thống, dễ dàng tích hợp với các công cụ hiện có và đáp ứng nhu cầu kinh doanh đa dạng. #### **Hỗ trợ các phiên bản Kubernetes mới nhất:**  * SKS luôn cập nhật những phiên bản Kubernetes mới nhất (minor version từ 1.27, 1.28, 1.29) để đảm bảo bạn luôn tận dụng được những tính năng tiên tiến nhất. #### **Kubernetes Networking:** * SKS tích hợp Cilium, mang lại tính hiệu quả và bảo mật cao. #### Tích hợp Blockstore Native (Container Storage Interface - CSI) * **Blockstore Native** tích hợp với Kubernetes thông qua giao diện Container Storage Interface (CSI) là một giải pháp lưu trữ cho các container, cho phép quản lý và sử dụng các dịch vụ lưu trữ khối (block storage) trực tiếp trong môi trường Kubernetes. * **Khả năng quản lý lưu trữ linh hoạt:** CSI cho phép người dùng dễ dàng tạo, gắn kết, và quản lý các block storage volumes từ trong cụm Kubernetes. Điều này giúp cải thiện đáng kể khả năng quản lý tài nguyên lưu trữ và đảm bảo rằng các ứng dụng có thể tiếp cận nhanh chóng với dữ liệu cần thiết. #### **Tích hợp Load Balancer (Network Load Balancer, Application Load Balancer) thông qua các driver được tích hợp sẵn:** * SKS cung cấp khả năng quản lý Network LB & Application Load Balancer thông qua YAML của Kubernetes, giúp bạn dễ dàng expose Service trong Kubernetes ra bên ngoài. #### **Hibernate K8S Cluster** * Hibernate là một tính năng cho phép người dùng đưa cụm Kubernetes (K8S) vào trạng thái ngủ đông (hibernation), tạm thời dừng toàn bộ các tài nguyên và dịch vụ của cụm mà không cần phải xóa đi. Khi cụm Kubernetes ở trạng thái hibernate, tất cả các node và container trong cụm sẽ bị tạm dừng hoạt động, nhưng các cấu hình và trạng thái của chúng sẽ được lưu trữ lại. Khi cần, người dùng có thể khôi phục cụm Kubernetes từ trạng thái ngủ đông, và tất cả các tài nguyên sẽ trở lại trạng thái hoạt động như trước. ### **Ngoài ra, SKS còn có các ưu điểm sau:** * Dễ sử dụng: SKS cung cấp giao diện đơn giản và dễ sử dụng. * Chi phí hợp lý: SKS cung cấp mức giá cạnh tranh cho các dịch vụ của mình. Lợi ích của Sun Kubernetes Spinner so với Vanilla Kubernetes (Self-Managed K8s) ------------------------------------------------------------------------------- * **Triển khai và Quản lý**: * Control Plane được cung cấp và quản lý bởi nhà cung cấp dịch vụ (như Amazon EKS, Google GKE, Azure AKS). Người dùng chỉ cần quản lý các node (worker nodes) và ứng dụng chạy trên đó. * Các tác vụ bảo trì như nâng cấp, sao lưu, và vá lỗi được tự động hóa hoặc dễ dàng thực hiện thông qua giao diện quản lý của dịch vụ. * **Độ tin cậy và hỗ trợ**: Dịch vụ thường đi kèm với SLA cao, bảo đảm độ tin cậy và hỗ trợ từ nhà cung cấp dịch vụ. * **Tích hợp dễ dàng**: Thường có sẵn tích hợp với các dịch vụ khác của cloud provider, như load balancer, storage, và monitoring. * **Khả năng mở rộng linh hoạt**: Tự động mở rộng tài nguyên khi cần thiết mà không cần can thiệp thủ công. Resource pool cả về số node và tài nguyên lưu trữ lớn hơn, do có tích hợp sẵn với Container Storage Interface Sun Kubernetes Spinner là lựa chọn phù hợp cho các doanh nghiệp muốn tận dụng Kubernetes mà không cần đầu tư nhiều vào quản lý và duy trì hệ thống, trong khi Vanilla Kubernetes phù hợp hơn cho những ai cần sự tùy chỉnh cao và kiểm soát toàn diện hệ thống của mình Tình huống sử dụng của K8S -------------------------- ### Triển khai kiến trúc Microservice Container có các đặc tính như nhỏ, nhẹ, đóng gói. Những điều này phù hợp cho việc triển khai kiến trúc microservice. Lúc này mỗi container sẽ tương ứng với một service, hệ thống trở nên linh hoạt do dễ dàng thay đổi từng phần mà không làm ảnh hưởng đến phần còn lại. K8S mang đến những tính năng hiệu quả ở cấp độ production khiến việc triển khai và đáp ứng các yêu cầu của hệ thống microservice trở nên dễ dàng hơn. ### DevOps Với một team DevOps, khả năng nâng cấp và triển khai hệ thống nhanh chóng là một trong những yếu tố cốt lõi. K8S cung cấp các công cụ cho cả triển khai và bảo trì hệ thống. K8S API cho phép kết hợp các ứng dụng của nhà phát triển và các công cụ DevOps khác. Các nhu cầu về DevOps  như quan sát, truy cập, deploy, nâng cấp, cấu hình và tối ưu hệ thống đều được hỗ trợ đầy đủ. ### Multi-Tenancy Có thể dễ dàng triển khai một kiến trúc multi-tenancy với container. Trong kiến trúc multi tenantcy, một hệ thống ứng dụng có thể phục vụ cho nhiều khách hàng, các khách hàng này được gọi là các tenant. Việc tồn tại nhiều khách hàng có thể dưới dạng kiến trúc server và database  hoặc tồn tại ở dạng logic theo tenant-data. Cho dù triển khai theo hình thức nào, K8S cũng phù hợp cho các nhu cầu mở rộng hệ thống (thêm các tenant). Lúc này một hệ thống có thể scale để đáp ứng tải cho ứng dụng hiện tại. Hoặc cung cấp thêm tenant bằng cách triển khai cả một hệ thống song song với hệ thống hiện tại một cách nhanh chóng với khả năng triển khai các workload qua file template của K8S ### Triển khai hệ thống Hybrid Cloud/Multi-Cloud K8s dựa trên công nghệ container, nên có tính đóng gói mạnh mẽ, các cài đặt cần thiết và dependency đã được đóng gói toàn bộ trong container, đảm bảo runtime không có khác biệt. Nhà phát triển có thể triển khai cùng một hệ thống lên nhiều hạ tầng và nhà cung cấp dịch vụ Cloud khác nhau theo nhu cầu thực tế. Hoặc triển khai theo mô hình dự phòng, triển khai song song hai hệ thống cho nhu cầu backup. ### AI và Machine Learning Xây dựng và triển khai các hệ thống AI và ML yêu cầu dung lượng lưu trữ lớn và các tiến trình xử lý phức tạp cần đến năng lực xử lý. Triển khai các hệ thống này trên K8s giúp nhà phát triển dễ dàng hơn trong việc quản lý scale của ứng dụng, K8s cũng hỗ trợ khả năng Autoscale các Node và Auto Provisioning Block Storage nếu được tích hợp với hạ tầng lưu trữ. Điều này sẽ luôn đảm bảo đầy đủ tài nguyên cho hệ thống một cách tự động. ```{toctree} :caption: 'Contents:' :maxdepth: 1 how-to/how-to reference/reference.md ```