Sizing
Aos Edge Cloud Sizing for AWS
By defect EKS has cluster autoscaler configured as requisite for the normal AosEdge Cloud implementation, which means that EKS will autoscale the nodes on demand, depending on the metrics sent by the pods or if the pods are not able to schedule anymore workloads due lack of EKS nodes.
The size can be set depending on your requirements, the minimum size supports up to 50k units with one rabbitmq vm. More information about limits and costs in Cost Estimation per units.
Be defect the minimum specs for AosCloud Edge in AWS are 4 m5xlarge EKS nodes, this can be resized to have a greater nodes as minimum threshold, this can be configured in the infrastructure section for EKS nodes sizes and limits.
AWS EKS Cluster Autoscaler
Autoscaling is a function that automatically scales your resources up or down to meet changing demands. The Kubernetes Cluster Autoscaler automatically adjusts the number of nodes in your cluster when pods fail or are rescheduled onto other nodes. The Cluster Autoscaler is typically installed as a Deployment in your cluster. It uses leader election to ensure high availability, but scaling is done by only one replica at a time. This is a major Kubernetes function that would otherwise require extensive human resources to perform manually.
More information can be found in the AWS Autoscaling official docs.
Horizontal Pod Autoscaler
In Kubernetes, a HorizontalPodAutoscaler automatically updates a workload resource (such as a Deployment or StatefulSet), with the aim of automatically scaling the workload to match demand.
Horizontal scaling means that the response to increased load is to deploy more Pods. This is different from vertical scaling, which for Kubernetes would mean assigning more resources (for example: memory or CPU) to the Pods that are already running for the workload.
More information can be found in the Kubernetes official docs.
Auto-scale limits
Limits for autoscaling can be set for EKS Nodes or cluster autoscaler and for RabbitMQ Scaler, both options configurable in the terraform properties.
File: terraform/infrastructure/terraform.tfvars
Disclaimer: There is no feature yet to control maximum ammount of RabbitMQ Scaler units.
eks_scaling_config = {
desired_size = 3,
max_size = 10,
min_size = 3,
}