AWS cung cấp 3 loại điện toán chính là: máy ảo (VM), container và không có máy chủ (serverless). Trong phần này, hãy cùng CodeGym tìm hiểu về Container Service và cách chạy chúng.
Nội dung
1. Containers
Container có thể lưu trữ nhiều khối lượng công việc khác nhau. Bao gồm: ứng dụng web, di chuyển nâng và dịch chuyển, ứng dụng phân tán và hợp lý hóa môi trường phát triển, thử nghiệm và sản xuất.
1.1. Lịch sử hình thành của Containers Service
Mặc dù được gọi là công nghệ mới, nhưng container đã xuất hiện vào những năm 1970. Tại thời điểm này, một số hạt nhân UNIX (lõi trung tâm của hệ điều hành) có khả năng tách biệt các quy trình của chúng, thông qua việc cô lập. Điều này được cấu hình thủ công, khiến các hoạt động trở nên phức tạp.
Với sự phát triển của cộng đồng phần mềm nguồn mở, các container đã phát triển. Ngày nay, các container được coi như giải pháp cho các vấn đề của máy tính truyền thống. Bao gồm cả vấn đề làm cho phần mềm chạy đáng tin cậy khi nó di chuyển từ môi trường máy tính này sang môi trường máy tính khác.
1.2. Container là gì?
Container là một đơn vị chuẩn hóa đóng gói mã của bạn và các phần phụ thuộc của nó. Gói này được thiết kế để chạy đáng tin cậy trên mọi nền tảng. Vì container tạo ra môi trường độc lập của riêng nó. Với container, khối lượng công việc có thể được chuyển từ nơi này sang nơi khác. Chẳng hạn như từ môi trường phát triển sang môi trường sản xuất hoặc từ môi trường tại chỗ (on-premises) sang môi trường đám mây (cloud).
Một ví dụ về nền tảng container hóa là Docker – một loại container runtime phổ biến. Docker giúp đơn giản hóa việc quản lý toàn bộ ngăn xếp hệ điều hành cần thiết để cô lập container, bao gồm cả mạng và lưu trữ. Docker giúp khách hàng tạo, đóng gói, triển khai và chạy container.
2. Sự khác biệt giữa VM và container
Container chia sẻ cùng hệ điều hành và hạt nhân với máy chủ mà chúng được triển khai. Tuy nhiên, máy ảo (VM) lại chứa hệ điều hành riêng của chúng. Mỗi máy ảo phải duy trì một bản sao của hệ điều hành. Điều này dẫn đến lãng phí một lượng tài nguyên.
Container nhẹ hơn và khởi động nhanh hơn, gần như ngay lập tức. Sự khác biệt về thời gian khởi động này trở nên vô cùng quan trọng. Đặc biệt, khi thiết kế các ứng dụng phải mở rộng nhanh chóng trong các đợt bùng nổ I/O.
Container có thể cung cấp tốc độ. Tuy nhiên, máy ảo cung cấp toàn bộ sức mạnh của hệ điều hành và nhiều tài nguyên hơn, như các gói cài đặt, hạt nhân chuyên dụng,..
3. Sắp xếp các container (Orchestrating containers)
Trong AWS, container có thể chạy trên các phiên bản EC2. Ví dụ, bạn có thể có một phiên bản lớn và chạy một vài container trên phiên bản đó. Mặc dù việc quản lý một phiên bản không phức tạp, nhưng nó thiếu tính khả dụng và khả năng mở rộng cao. Hầu hết các công ty và tổ chức chạy nhiều container trên nhiều phiên bản EC2 và nhiều vùng khả dụng.
Nếu bạn đang cố gắng quản lý máy tính của mình ở quy mô lớn, bạn nên cân nhắc những điều sau:
- Cách đặt container của bạn trên các phiên bản của bạn
- Điều gì xảy ra nếu container của bạn bị lỗi
- Điều gì xảy ra nếu phiên bản của bạn bị lỗi
- Cách giám sát việc triển khai container của bạn
Sự phối hợp này được xử lý bởi dịch vụ điều phối container. AWS cung cấp hai dịch vụ điều phối container. Đó là: Amazon Elastic Container Service (Amazon ECS) và Amazon Elastic Kubernetes Service (Amazon EKS).
4. Quản lý container bằng Amazon ECS
4.1. Amazon ECS là gì?
Amazon ECS là dịch vụ điều phối container đầu cuối giúp bạn tạo container mới. Với Amazon ECS, container của bạn được định nghĩa trong định nghĩa tác vụ mà bạn sử dụng để chạy một tác vụ riêng lẻ hoặc một tác vụ trong một dịch vụ. Bạn có tùy chọn chạy các tác vụ và dịch vụ của mình trên cơ sở hạ tầng không có máy chủ do một dịch vụ AWS khác có tên là AWS Fargate quản lý. Ngoài ra, để kiểm soát cơ sở hạ tầng tốt hơn, bạn có thể chạy các tác vụ và dịch vụ của mình trên một cụm các phiên bản EC2 mà bạn quản lý.
4.2. Cách quản lý container bằng Amazon ECS
Nếu bạn chọn kiểm soát nhiều hơn bằng cách chạy và quản lý container của mình trên một cụm các phiên bản Amazon EC2, bạn cũng sẽ cần cài đặt container Amazon ECS agent trên các phiên bản EC2 của mình.
Lưu ý rằng một phiên bản EC2 có cài đặt agent container thường được gọi là phiên bản container. Container agent này là mã nguồn mở và chịu trách nhiệm giao tiếp với dịch vụ Amazon ECS về thông tin chi tiết về quản lý cụm. Bạn có thể chạy agent trên cả AMI Linux và Windows.
Khi các instance chứa Amazon ECS được thiết lập và chạy, bạn có thể thực hiện các hành động sau:
- Khởi chạy và dừng chứa
- Lấy trạng thái cụm
- Mở rộng và thu hẹp
- Lên lịch đặt các chứa trên cụm của bạn
- Gán quyền
- Đáp ứng các yêu cầu về tính khả dụng
Để chuẩn bị ứng dụng chạy trên Amazon ECS, bạn tạo một định nghĩa tác vụ. Định nghĩa tác vụ là một tệp văn bản, ở định dạng JSON, mô tả một hoặc nhiều vùng chứa. Nó tương tự như bản thiết kế mô tả các tài nguyên mà bạn cần để chạy một vùng chứa. Chẳng hạn như: CPU, bộ nhớ, cổng, hình ảnh, lưu trữ và thông tin mạng.
Đây là một định nghĩa tác vụ đơn giản mà bạn có thể sử dụng cho ứng dụng của mình. Trong ví dụ này, ứng dụng này chạy trên máy chủ web Nginx.
5. Sử dụng Kubernetes với Amazon EKS
5.1. Kubernetes là gì?
Kubernetes là một nền tảng mã nguồn mở. Nó có thể mở rộng, di động để quản lý khối lượng công việc và dịch vụ trong container. Bằng cách kết hợp phát triển phần mềm và hoạt động theo thiết kế, Kubernetes đã tạo ra một hệ sinh thái phát triển nhanh chóng, rất phổ biến và được thiết lập tốt trên thị trường.
5.2. Cách sử dụng Kubernetes với Amazon EKS
Nếu đã sử dụng Kubernetes, bạn có thể sử dụng Amazon EKS để sắp xếp khối lượng công việc trong AWS Cloud. Amazon EKS là dịch vụ được quản lý mà bạn có thể sử dụng để chạy Kubernetes trên AWS. Bạn sẽ không cần cài đặt, vận hành và bảo trì mặt phẳng điều khiển Kubernetes hoặc các nút của riêng bạn. Amazon EKS về mặt khái niệm tương tự như Amazon ECS, nhưng có những điểm khác biệt sau:
- Trong Amazon ECS, máy chạy container là phiên bản EC2 có cài đặt và cấu hình ECS agent để chạy và quản lý container của bạn. Phiên bản này được gọi là phiên bản container. Trong Amazon EKS, máy chạy container được gọi là nút worker hoặc nút Kubernetes.
- Container ECS được gọi là tác vụ. Container EKS được gọi là pod.
- Amazon ECS chạy trên công nghệ gốc của AWS. Amazon EKS chạy trên Kubernetes.
Nếu có các container chạy trên Kubernetes và muốn có giải pháp điều phối tiên tiến có thể cung cấp tính đơn giản, tính khả dụng cao và khả năng kiểm soát chi tiết đối với cơ sở hạ tầng, thì Amazon EKS là công cụ dành cho bạn.
Việc hiểu rõ các công nghệ này giúp bạn tối ưu hóa quy trình phát triển và còn tăng cường khả năng triển khai ứng dụng linh hoạt. Nếu muốn nâng cao kỹ năng trong việc quản lý containers và khám phá thêm các công nghệ tiên tiến, hãy tham gia khóa học AWS tại CodeGym!
0 Lời bình