In the past, applications would be deployed by installation on a host, using the operating system package manager. This was a heavy solution with tremendous reliance on the operating system package manager and increased complexity with libraries, configuration, executables and so on all interconnected.
Then came containers. Containers are small and fast, and are isolated from each other and from the host. Containers have numerous benefits, such as continuous development and deployment, agile application creation, and increased portability to name just a few.
Enter Kubernetes, or “K8”. Kubernetes is “a portable, extensible open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation” and is used extensively, including by IBM, eBay and SAP.
Kubernetes, Containers and AWS
A containerized application typically consists of many containers. There might be a container for the application itself, for a database, and so on. This environment could be built and tested on a single host, however this can quickly become problematic if there is an issue when in production.
Thus a multi-container application can be deployed on multiple hosts. But how does one manage these? A specialized tool is required, which is where “container orchestration” comes in. When it comes to container orchestration and Amazon Web Services (AWS), one of the most popular is the aforementioned Kubernetes. There are many ways to run a Kubernetes cluster on AWS, and we’ll look at two major ones: kops, and EKS.
Kubernetes Operations, or “kops” is a set of tools for installing, operating, and deleting Kubernetes clusters in the cloud. It is billed as “the easiest way to get a production grade Kubernetes cluster up and running”. Users include PlayCom and Spreaker.
What’s great about kops is that it gives powerful functionality (you can create, delete, and maintain Kubernetes clusters) from the command line.
It officially supports AWS of course, which is another benefit.
With kops, you can have fully automated installation, support for custom Kubernetes add-ons, autocompletion in the command line, self-healing functionality, and support for most operating systems.
Amazon Elastic Container Service for Kubernetes, known as EKS, allows the deployment, management, and scaling of containerized applications, using Kubernetes, on AWS.
EKS runs the Kubernetes management infrastructure across multiple AWS availability zones, eliminating that single point of failure referenced previously. Companies using EKS include GoDaddy, Skyscanner, Verizon, Snapchat, and many other giants.
EKS can be used for running microservices applications, hybrid container deployments, batch processing and application migration (you can containerize and migrate existing applications to EKS without needing to refactor code or tooling).
What are some of the benefits of Amazon EKS? For one, EKS is certified Kubernetes conformant, so applications managed by EKS are fully compatible with applications managed by any standard Kubernetes environment. Another benefit is that EKS provides on-demand upgrades and patching, and there is no control plane to manage.
Different Horses For Different Courses
Which to choose? Both of these options are powerful, market-tested and have great integration with AWS.
Amazon EKS launched at AWS re:Invent in December of 2017. Amazon rigorously tested it for 6 months before general release, so as to ensure reliability, and that is would be a realistic alternative to kops which is generally well-liked by the Kubernetes community and is open source. This is perhaps one of the reasons that take-up of EKS is taking longer than some people expected.
There is good reason for this however. As The New Stack reports, “One of the reasons why EKS is taking a longer time to become generally available is the integration with existing building blocks of AWS. From VPC networking to IAM, Amazon has carefully integrated the core services without breaking the expected behavior. Customers can also take advantage of standard monitoring and logging tools such as CloudWatch and CloudTrail for logging and monitoring EKS workloads. Amazon EKS passed the Cloud Native Computing Foundation conformance test to become a certified hosted platform, which means that all the plugins and extensions that work with upstream Kubernetes will work as is in EKS.”
Certainly kops is very easy to use, there is a tremendous amount of community support and literature around to assist users, and it is well designed for creating, deleting, customizing, upgrading and maintaining Kubernetes clusters.
Kops has the typical advantages and drawbacks of battle-hardened open source solutions, and certainly gets the job done. With EKS, the “new kid on the block”, Amazon has built a powerful tool that packs a powerful punch when it comes to functionality and integrations, including with popular AWS services such as their IAM.
In the end, if your organization is already deeply integrated with AWS, EKS could be a great option going forward. Like other Amazon services, keep an eye on costs, as scaling happens quickly and costs can escalate sharply. But don’t disregard kops just yet: it has proven itself as a solid performer that gets the job done.