Self Driving Clusters - Managed Autoscaling Kubernetes on AWS
Giant Swarm provides managed Kubernetes clusters for our customers, which are operated 24/7 by our operations team. Each customer has their own private control plane which they can use to create as many tenant clusters as they require.
This results in a large number of tenant clusters and control planes that we need to manage and keep up to date. So automation is essential and for that, we leverage Kubernetes itself. Our microservices and operators (custom controllers) run in a Kubernetes cluster.
From the beginning, our tenant clusters have come with managed components like Nginx Ingress Controller and Calico and DNS. Our customers have been asking us to manage more components for them. This allows them to focus on their applications, which is what they really care about. We’re calling this the Managed Cloud Native Stack and we’re hard at work adding more components to our app catalog.
We’re delighted to announce the latest managed component for AWS clusters is the upstream cluster-autoscaler.
Scaling - how it worked before
Our control plane gives customers an API with which they can create clusters and scale them. This makes it easy to automate provisioning clusters. Many customers were also using our API for scaling. One customer has even written an operator to do this.
The first step when adding components from the community is our Solutions Engineers work with our customers to get it installed in their clusters. This is documented and can then be used as a tutorial by other customers. Once we see overall demand and there is a stable solution we add the component to our official app catalog and provide 24/7 support for it.
We have already included metrics-server as an essential component in our clusters for a while now. This is a requirement for the Horizontal Pod Autoscaler and the Vertical Pod Autoscaler. Many of our customers already use these to autoscale their pods. So this is something else they don’t have to worry about in their clusters. Now both HPA and VPA can be used in conjunction with the cluster-autoscaler to autoscale both pods and nodes.
When adding the autoscaler to our app catalog we realized that it would be nice to install it as a default app. Why not make all clusters ship with autoscaling enabled by default? So we decided to install it as an essential into all AWS clusters. Users can define the cluster size with a minimum and maximum number of nodes. If both are identical the cluster will not be autoscaled.
With node autoscaling your clusters become more dynamic and are better able to cope with changes in load. If pods cannot be scheduled due to insufficient resources your cluster will be scaled up without requiring manual intervention. If nodes are underutilized your cluster will be scaled down and your costs will be reduced.
Soon we will be adding more optional apps and an incubation catalog. This lets our customers easily try out the latest new components from the community. Once these components are ready they will graduate to our main app catalog, and be supported 24/7 by our operations team.
With Giant Swarm’s immutable infrastructure the orchestration of your clusters becomes super simple. You can easily create clusters, scale them up and down and upgrade to the latest Kubernetes version. The immutability of the the whole infrastructure makes this fast and resilient and always brings the cluster into a known and tested state. Request your free trial of the Giant Swarm Infrastructure here.