How to Optimize the Cost of Your Kubernetes Deployment
Amazon EKS price reduction and cost optimization
On January 21, 2020, AWS announced a price reduction for Amazon Elastic Kubernetes Service (Amazon EKS), lowering the price by 50% — from $0.20 per hour to $0.10 per hour for each Amazon EKS cluster that you create and for the AWS resources you create to run your Kubernetes Worker Nodes. The new price applies to all new and existing Amazon EKS clusters, and you only pay for what you use, based on the total time in hours per month. So, my Amazon EKS cost, which used to be $144 per month (based on $0.20 per hour x 24 hours x 30 days), will now be reduced to $72 per month.
Here at nOps, we are very customer-focused regarding cost optimization on AWS. The nOps cloud management platform helps identify and reduce unnecessary costs continuously. Such costs can be caused by overprovisioning, underutilization of resources, poor audit of infrastructure resources to find unused resources that can be deleted, and other types of improper management of AWS infrastructure resources.
And now, nOps has enhanced the nOps dashboard, enabling us to give our customers deeper insights into their Kubernetes deployments by showing the cost of every resource within a Kubernetes cluster. Such insights can help you make better decisions on optimizing application resources to reduce the cost of running your workloads.
Kubernetes and Amazon EKS
Kubernetes is an open-source container orchestration system for automating application deployment, scaling, and management. Here is a diagram of Kubernetes showing all its components:
The major components are:
- Kubernetes Control Plane — Governs how Kubernetes communicates with your cluster, including scheduling and detecting/responding to cluster events.
- Kube-api-server — The front-end for the Kubernetes Control Plane that exposes the Kubernetes API. The API server is designed to scale horizontally (scaling by deploying more instances).
- etcd — A consistent and highly available key-value store used as Kubernetes’ backing store for all cluster data.
- Worker Nodes (EC2 Instances) — Host the Pods that are the components of the application.
When using containers for deployment, the first question that comes to mind is how to scale and manage thousands of containers in a real production environment setup. You can either set up Kubernetes manually by getting your own server(s) and deploying there, or use a cloud provider where the setup process is abstracted and you are only given full access to the Worker Nodes. However, when there are hundreds of images, it’s challenging to manage them manually.
That’s where Amazon EKS comes in. It’s a fully managed service that makes it easy to deploy, manage, and scale containerized applications using Kubernetes on AWS without needing to stand up or maintain your own Kubernetes Control Plane. It’s used to run everything from simple websites to mission-critical systems and large-scale machine learning jobs.
In Amazon EKS, you are billed for the Kubernetes Control Plane, etcd, and Kubernetes API. As mentioned above, the price is now $0.10 per hour for each Amazon EKS cluster that you create. You’re also charged for the AWS resources (network services and Amazon EC2 instances) you use to run your Kubernetes Worker Nodes.
Using the nOps dashboard to view and optimize your Kubernetes costs
As mentioned earlier, we’ve enhanced the nOps dashboard. Here are the steps to use the dashboard:
- Install Amazon CloudWatch Container Insights, which collects, aggregates, and summarizes metrics and logs from your containerized applications and microservices. It takes just a few seconds — follow the quick start setup steps for it on Amazon EKS.
- In nOps, under Cost Control, navigate to Container Cost. Click the AWS account you wish to examine on the left. That will show you all the Amazon EKS clusters in your account in a table that indicates the amount that has been spent each month. Above the table is a bar chart that gives an instant view of the amount spent for each month on your Amazon EKS cluster.
- To dive deeper and see the cost of major application resources within your Kubernetes cluster: Click on an Amazon EKS cluster in the list of clusters to drill down to the Pod level (the smallest unit of deployment). As shown below, you get a very clear breakdown — from the running time, to the CPU and memory consumption of the Pod, to the Pod cost. In the past, insights on container costs have never been this granular.
- As shown below, nOps provides the same level of granularity for services. You can view each service and how many CPU and memory resources it consumes, to understand the financial implication of each service that has been created in the Kubernetes cluster.
- The most exciting part of the nOps dashboard is the ability to gain insights into the total cost of your Amazon EKS cluster — a never before seen statistic on container costs. In the past, it’s been difficult for business and technology leaders to capture the total cost of a typical production-grade Kubernetes cluster that includes all resources such as Amazon EC2 instances, Amazon Virtual Private Cloud (Amazon VPC) for networking, etc. This nOps feature is the first of its kind. To view this, go to Cost Control > Container Cost >. Click on one of the Amazon EKS clusters on the list. A pane will slide from the right showing the figure below.
Frequently asked questions:
Q. What is Kubernetes?
A. Kubernetes is an open-source container-orchestration system for automating application deployment, scaling, and management. Originally designed by Google, it is now maintained by the Cloud Native Computing Foundation. While Kubernetes is most often used with the Docker containerization platform, it is designed to work with all container systems that conform to Open Container Initiative (OCI) standards.
Q. What is Docker?
A. Docker is a tool that uses OS-level virtualization to make it easier to create, deploy, and run applications by using containers. Containers are isolated from one another and contain everything needed to run an application: code, runtime, system tools, system libraries, and settings. Containers communicate with each other through well-defined channels.
Q: How does Amazon EKS work?
A: It provisions (starts), scales, and manages the Kubernetes Control Plane and Worker Nodes for you in a highly available and secure configuration.
Q: What are the benefits of Amazon EKS?
A: Amazon EKS:
- Automatically detects and replaces unhealthy Control Plane nodes and provides patching for the Control Plane.
- Performs managed, in-place cluster upgrades for both Kubernetes and Amazon EKS platform versions so you can take advantage of the latest Kubernetes features, as well as the updates to Amazon EKS configuration and security patches.
- Enables you to focus on building applications instead of managing AWS infrastructure.
Q: Does Amazon EKS work with my existing Kubernetes applications and tools?
A: Yes, you can use any plugins or tooling from the Kubernetes community. Applications running on Amazon EKS are fully compatible with applications running on any standard Kubernetes environment, so you can easily migrate any standard Kubernetes application to Amazon EKS without any code modifications.
We continue to enhance nOps with new features that provide our customers with deeper insights to enable them to make better decisions on optimizing application resources to reduce the cost of running their workloads.
Want sharper visibility into the cost of your Kubernetes deployment on AWS and see how much you can save? Click here to get started with a free 14-day trial of nOps (or click here to sign into nOps if you’re already a user) and review the costs of Amazon EKS in your account.