Theo  như tập đoàn dữ liệu quốc tế (IDC) có hơn 85% các tổ chức trên thế giới đã và đang sử dụng Container trong một số môi trường của họ và hơn 40% đang sử dụng Container trong sản xuất. Tỷ lệ chấp nhận là rất lớn và tiếp tục tăng nhanh.

Với sự tăng trưởng này, một số thách thức đã tăng lên liên quan đến sự hỗ trợ vận hành của các ứng dụng dựa trên container. Các mối quan tâm phổ biến bao gồm chính các container của họ: quản lý nơi sống, giành quyền kiểm soát các hoạt động mà họ được phép thực hiện, thực hành triển khai và bảo mật và tuân thủ chung. Truy cập vào tài nguyên cho các container có thể gặp khó khăn, chưa kể đến việc quản lý cơ sở hạ tầng bên dưới các nhóm container yêu cầu cung cấp, quản lý, tự động mở rộng và thậm chí vá. Sau những thách thức này, Kubernetes đã nổi lên như là tiêu chuẩn cho việc điều phối container. Làm sao chuyện này lại xảy ra? Đó sẽ là một câu chuyện hay cho một bài đăng trên blog khác ? Với Kubernetes, các container có thể được quản lý bởi các cụm trong đám mây công cộng, đám mây lai và thậm chí trong môi trường nhiều đám mây. Tuy nhiên, việc tự mình triển khai và quản lý Kubernetes là khó và các dịch vụ Kubernetes được quản lý đã nổi lên như một cách hợp lý để triển khai các container trong đám mây công cộng. Kubernetes được quản lý đang phát triển và, dần dần, các container không có máy chủ đang trở thành một tiêu chuẩn.

Việc quản lý các máy ảo điều hành Kubernetes sẽ được bổ sung thêm chi phí hoạt động đáng kể và các dịch vụ container không có máy chủ trực tuyến có sẵn từ các nhà cung cấp đám mây công cộng đang giải quyết vấn đề. Mặc dù rất hữu ích nhưng các dịch vụ này  rất lấu mới có thấy được hiệu quả về chi phí và toàn bộ các tính năng.

Trong bài đăng trên blog này, chúng tôi sẽ xem xét các dịch vụ khác nhau được cung cấp bởi ba nhà cung cấp đám mây hàng đầu và giới thiệu cách Spotinst Ocean có thể giúp bạn phân phối cơ sở hạ tầng đàn hồi theo cách tối ưu hóa chi phí và hiệu suất  tại chỗ. SpotInst Ocean mang lại ROI tốt hơn bằng cách tận dụng trung tâm dữ liệu công cộng(leveraging the public) và on-premises để triển khai hiệu quả các cụm container với Kubernetes.

Sự_kết_thúc_của_VMs_1

Hình 1.1 Container Services with VM management overhead

the_end_of_VMs-02

Hình 1.2 Container Services without VM overhead

Amazon Web Services (AWS) cung cấp nhiều dịch vụ container khác nhau để đáp ứng nhu cầu của khối lượng công việc được đóng gói hiện đại. Dịch vụ container đàn hồi của AWS là một trong những dịch vụ container đầu tiên trên thị trường có động cơ phối hợp độc quyền. Sau khi Kubernetes nổi lên như là tiêu chuẩn cho việc điều phối container, AWS EKS, dịch vụ Kubernetes được quản lý của họ, đã được cung cấp dưới dạng dịch vụ đám mây. AWS Fargate là công cụ cung cấp container không có máy chủ AWS, hỗ trợ AWS ECS cho việc điều phối container.

Điểm mạnh:

Thế mạnh của Amazon nằm ở việc giúp khách hàng linh hoạt hơn khi sử dụng dịch vụ container. Họ cung cấp hai loại dịch vụ container khác nhau, Amazon ECS và EKS. Mặc dù ECS cung cấp sự linh hoạt hơn trong việc cân bằng tải và tích hợp với vai trò IAM cho các container trong một nhiệm vụ, nhưng nó sử dụng một công cụ điều phối độc quyền. AWS EKS cung cấp tiêu chuẩn  dựa trên container của Kubernetes. AWS Fargate là một dịch vụ container không có máy chủ và hiện chỉ hỗ trợ ECS cho một ngày.

  • Với EKS, có thêm chi phí hoạt động trong việc triển khai các ứng dụng do người dùng bắt buộc phải quản lý các máy ảo cơ bản.
  • Việc tích hợp EKS với các dịch vụ AWS khác bị hạn chế tại thời điểm này. Ví dụ: EC2 là một quy trình riêng biệt thường được thực hiện với các mẫu Cloudform. Hơn nữa, các yêu cầu cơ sở hạ tầng như các lớp lưu trữ cần phải được cấu hình thủ công.
  • Không hỗ trợ Fargate cho Kubernetes
  • Ở quy mô, Fargate đắt hơn đáng kể so với việc quản lý giá niêm yết theo yêu cầu.

Tư vấn

AWS Fargate là cách dễ nhất để sử dụng ECS trong mô hình không có máy chủ. Fargate cung cấp một cách đơn giản để các nhà phát triển bắt đầu với việc triển khai các container. Tuy nhiên, người dùng có xu hướng dùng Kubernetes cho môi trường sản xuất  hơn và không có hỗ trợ Fargate, điều này khiến việc chuyển đổi trở nên khó khăn. Hơn nữa, mô hình định giá của Fargate có giá cao và làm tăng đáng kể chi phí chung của Cluster.

Google Cloud

Google cung cấp Google App Engine, một nền tảng như là một dịch vụ cung cấp với sự hỗ trợ cho các thùng chứa tương thích OCI, với Google Kubernetes Engine, dịch vụ Kubernetes được quản lý của họ. Chúng không có tương đương với AWS Fargate nhưng giá linh hoạt Google App Engine cung cấp các lợi thế tương tự. AWS Fargate và Google App Engine, tuy nhiên đây không phải là một sự so sánh  hai quả táo với nhau và có một số khác biệt đáng kể.

Sức mạnh:

  • Google Kubernetes Engine chạy các phiên bản Kubernetes mới nhất, giúp các nhà phát triển truy cập nhanh hơn vào các tính năng mới của Kubernetes.
  • Được tích hợp tốt với các Dịch vụ khác của Google, bao gồm cả tích hợp riêng với lưới dịch vụ Istio. Các dự án lưới dịch vụ như Istio và linkerd đang trở thành cách phổ biến để cung cấp và thực thi dịch vụ trong Kubernetes.
  • Google cung cấp phiên bản triển khai đám mây lai Kubernetes Engine tại chỗ.

Điểm yếu:

Thiếu một dịch vụ chuyên dụng như AWS Fargate hoặc Azure Container Instances.

Google Kubernetes Engine là một lựa chọn tốt cho Hybrid Kubernetes liền mạch. Với điều đó, nó bổ sung thêm chi phí hoạt động đáng kể do thiếu dịch vụ không có máy chủ. Mô hình định giá dựa trên các trường hợp theo yêu cầu không tối ưu khi tận dụng cơ sở hạ tầng co giãn. Google App Engine cung cấp trải nghiệm người dùng tốt hơn, nhưng nó được đánh giá cao và thiếu tính linh hoạt của Google Kubernetes Engine.

Microsoft Azure cung cấp một  dịch vụ quản lý Kubernetes có tên  gọi là Azure Kubernetes Service (AKS) và dịch vụ container không có máy chủ có tên Azure Container Instances (ACI). Mặc dù AKS được định giá cơ sở  dựa trên các máy ảo, Triển khai Container Azure được định giá thấp dựa trên các Nhóm Container chứa một hoặc nhiều phiên bản. Chi phí của các nhóm container dựa trên bộ nhớ và vCPU cần thiết cho toàn bộ nhóm.

Điểm mạnh:

  • Azure Container Instances (ACI) được tích hợp với Kubernetes, cung cấp cho người dùng cách dùng Kubernetes clusters mà không cần quản lý cơ sở hạ tầng bên dưới.
  • Cả AKS và ACI đều được tích hợp rất  tốt với nhiều dịch vụ Azure, giúp khách hàng Azure dễ dàng sử dụng Kubernetes.
  • Hỗ trợ cho cả Windows và Linux container

Điểm yếu:

  • Thiếu hỗ trợ việc triển khai Hybrid
  • Ở quy mô, giá trở thành một vấn đề hoạt động và khó để quản lý.
  • Vẫn còn thiếu các yếu tố tương đương tính năng quan trọng trong mạng và lưu trữ.
  • Không có VMs, chỉ đúng với Containers

Kỳ vọng thực sự mà Containers điều hành mà không có VMS

Chúng tôi đang chứng kiến một xu hướng lớn và sự thay đổi trong việc quản lý Containers clusters đẩy theo hướng trừu tượng hơn về cơ sở hạ tầng, ít chi phí quản lý VM hơn và tập trung nhiều hơn vào Container, Pods với tư cách là công dân hạng nhất. Với xu hướng đó, các nền tảng như AWS Fargate, Azure Container Instances (ACI) và Spotinst Ocean đang trở nên phổ biến rất nhanh. Không còn ý nghĩa gì khi quản lý VM nữa, mở rộng quy mô và quan tâm đến chi phí điều hành  liên quan.

Source: Kevin McGrath, VP Of Architecture at Spotinst