More about Kubernetes on AWS
AWS Elastic Container Service (ECS) is Amazon’s homegrown container orchestration platform. It excels in ease of use, but is it a real alternative for Kubernetes, the hugely popular de-facto standard for container orchestration?
In this post we argue that comparing ECS to plain Kubernetes is not completely accurate, because ECS offers a fully managed experience which Kubernetes cannot. We also review Amazon Elastic Kubernetes Service (EKS) as a third option that levels the playing field. In addition, we show how NetApp Cloud Volumes ONTAP can help provision storage for ECS, EKS or plain Kubernetes storage.
In this article you will learn:
- What is ECS and its advantages
- What is Kubernetes and its advantages
- Amazon ECS vs plain Kubernetes
- Amazon ECS vs EKS - comparing managed services
- How to choose between ECS, EKS, or plain Kubernetes
- ECS, Kubernetes and Cloud Volumes ONTAP
What Is AWS ECS?
Amazon Elastic Container Service (Amazon ECS) is a container orchestration service that runs and manages Docker containers. It runs clusters of virtual machines on the Amazon cloud, while managing, scaling, and scheduling groups of containers on those machines across multiple Availability Zones (AZs).
ECS provides a convenient programmatic way to check and modify the state of your cluster, perform operations on containers, and directly access Amazon services related to your cluster, such as IAM, CloudWatch and CloudTrail.
Image Source: AWS
Advantages of Amazon ECS include:
- Serverless infrastructure: ECS lets you operate containers without having to directly manage virtual machines. The ECS service deploys VMs and manages containers on them without user intervention.
- Built-in security: Amazon ECS is secured by default, with all containers launched in a Virtual Private Cloud with isolated, secure networking.
- AWS integration: ECS is smoothly integrated with other Amazon services which are useful for containerized workloads, such as Elastic Load Balancing, CloudWatch, CloudFormation, and IAM.
- Spot instances: Because containers are immutable, you can run many workloads using Amazon EC2 Spot Instances (which can be shut down with no advance notice) and save 90% on on-demand instance costs.
What is Kubernetes?
Kubernetes is an open source container orchestration framework. It was originally developed by Google, based on years of experience running the world’s biggest containerized systems. Kubernetes is very widely adopted and is today the de-facto standard for container orchestration.
Among the primary features of Kubernetes are service discovery and load balancing, orchestrating storage, including persistent storage, automated rollbacks for containerized applications, self-healing for Kubernetes clusters, secrets, and configuration management.
Image Source: Kubernetes.io
AWS ECS vs Kubernetes
Comparing Kubernetes to Amazon ECS is not entirely fair. Amazon ECS provides two elements in one product: a container orchestration platform, and a managed service that operates it and provisions hardware resources. Kubernetes offers only one of these elements.
Increasingly, organizations are adopting managed Kubernetes services, which can reduce the complexity of Kubernetes and help them reach production more quickly. Examples of such services are the Amazon Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS), and the Google Kubernetes Engine (GKE). These services add a management layer to Kubernetes, making it fully comparable to Amazon ECS.
Advantages of Kubernetes include:
- Serverless infrastructure: Kubernetes containers can be operated without direct access to VMs. More than that, there are Kubernetes solutions that are real serverless and integrate with AWS Fargate or Azure Container Instances.
- Built-in security: Kubernetes creates its own private network with its own isolated, secure networking.
- Vendor agnostic: Unlike Amazon ECS, Kubernetes is a vendor agnostic platform that can run on any cloud provider or on-premises. Kubernetes workloads are portable and support hybrid and multicloud strategies.
- Open source: Kubernetes is supported by a huge open-source community, with a large ecosystem of tools and plugins, strong support, and an ambitious development roadmap.
- Battle tested: Kubernetes has the most extensive production experience of any container orchestration platform. It is proven to be robust and reliable at virtually any scale.
AWS ECS vs EKS
AWS ECS gives you a way to manage a container service in AWS, but what if you want to run Kubernetes from within your AWS services? Amazon Elastic Kubernetes Service (Amazon EKS) is a management platform in AWS for Kubernetes. It is certified by the Kubernetes project, and so is guaranteed to run any existing applications, tools or plugins you may be using in the Kubernetes ecosystem.
Below are some of the key differences between ECS and EKS.
|Amazon ECS||Amazon EKS|
|Pricing||ECS itself is free, you pay only for
Amazon EC2 resources you use.
|The EKS management layer incurs an additional cost of $144 per month per cluster.|
|Ease of deployment||Seamless deployment of tasks directly from the AWS management console.||Configure and deploy clusters via Kops or CloudFormation templates, which is more complex.|
|Compatibility||Amazon-specific.||Supports multicloud and hybrid cloud deployments.|
AWS ECS, EKS, or Plain Kubernetes: Which Should You Choose?
Choosing between Amazon ECS, EKS, and self-managed Kubernetes depends on the size and nature of your project:
- Small deployments prefer ECS due to its seamless deployment and configuration.
- Large or hybrid deployments prefer EKS due to stronger customization and improved portability between clouds and on-premise systems.
- Legacy workloads transitioning to a containerized environment may gain the most from using plain Kubernetes, as it will allow you to build a dev/test/production environment on-premises, and then move it to the cloud if and when required.
ECS, Kubernetes and Cloud Volumes ONTAP
When it comes to deploying containerized workloads, both Kubernetes and Amazon ECS have certain limits that can hinder their usage at the enterprise level without help. For instance, costs can be a considerable factor when data in containers needs to be stored persistently, such as in the case of a database. What if the data in the containers needs to be used for testing purposes? This is where NetApp Cloud Volumes ONTAP can help.
NetApp Cloud Volumes ONTAP, the leading enterprise-grade data management solution, delivers secure, proven storage management services built on AWS, Azure, and Google Cloud cloud compute and storage. With the help of NetApp Trident, storage volumes on Azure Disk, Amazon EBS, or Google Persistent Disk can be dynamically provisioned automatically, without any effort on the user’s part.
Cloud Volumes ONTAP supports enterprise use cases such as file services, databases, DevOps, and application workloads. When it comes to Kubernetes storage, Cloud Volumes ONTAP provides Kubernetes integration for persistent storage requirements of containerized workloads, and supports a strong set of features that aren’t available natively in the cloud, including Kubernetes NFS sharing, high availability, cost-effective persistent data storage protection, Kubernetes cloud storage cost reduction with NetApp storage efficiency feature, cloud automation, and more.