4/29/2022
AWS introduced AWS Graviton series of processors supported EKS since 2019 and this gives a good opportunity to reduce cost and gain better performance.
Lot of organisations has adopted Kubernetes as the preferred container orchestration solution in recent years. Also the number of organizations that are adopting containers and micro service architectures increase day by day. As more and more workloads get deployed in Kubernetes with AWS, it becomes much more important to improve the cost efficiency of running these services.
AWS had introduced AWS Graviton series of processors supported EKS since 2019 and this gives a good opportunity to reduce cost and gain better performance.
Intel x86based server:
InstanceType: t3.large, CPU: 2, RAM:8, Storage: EBS Only, NetworkBandwidth: upto 5 Gbps, PricePerHour:0.096, Monthly: 70USD
Graviton arm based server:
InstanceType: t4g.large, CPU: 2, RAM:8, Storage: EBS Only, NetworkBandwidth: upto 5 Gbps, PricePerHour:0.0768, Monthly: 56USD
calculations were performed using the AWS cost calculator.
Based on this information when switching to Graviton based instance we could save 14 USD per instance within a month for large burstable type instance. This is about 20% in savings for the same performance. Therefore it makes total sense to use graviton instances if your workloads can support running in arm based architecture.
This would be easily archivable if the language or framework used for building the applications has arm support. As an example for a Golang application we only need to compile the application in arm compatible way.
So in this example i’m going to create an EKS cluster which will have arm based worker nodes.
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: cluster-graviton-1
region: eu-central-1
managedNodeGroups:
- name: ng-graviton-central-1a
instanceType: t4g.large
desiredCapacity: 1
availabilityZones: ["eu-central-1a"]
- name: ng-graviton-central-1b
instanceType: t4g.large
desiredCapacity: 1
availabilityZones: ["eu-central-1b"]
Above configuration will be used to create a cluster using eksctl cli.
eksctl create cluster -f graviton-cluster.yaml
We can see in the console the cluster is created and managed node pools are added.
Now we check if the cluster nodes are already registered via cli
kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-192-168-23-21.eu-central-1.compute.internal Ready <none> 6h30m v1.21.5-eks-9017834
ip-192-168-75-197.eu-central-1.compute.internal Ready <none> 6h30m v1.21.5-eks-9017834
In this article, we’ll explore how to leverage Terraform to streamline the process of creating an AWS EKS cluster and integrating it with an Application Load Balancer (ALB), ensuring a scalable and resilient infrastructure for cloud native applications.
3/31/2024
Locust is a framework for load testing written in python. It is easy to use and supports distributed mode for simulating a higher load. But running locust in distributed mode needs more effort and a good understanding of infrastructure. So i will be building an operator to make it easier.
8/23/2020