Service overview: Kubernetes. Why did we decide to use it?
Great news! SoilMate is moving to Kubernetes! In this short article, we will explain the main advantages of Kubernetes and how we use it in Machine Learning.
From SoilMate’s side, containerization and orchestration proved beneficial in setting the infrastructure with predictable, repeatable, fast development and deployment. Implementing Kubernetes was one step further in building an efficient project development process with a bunch of benefits:
- autoscaling — the complete automation and flexible scaling of the system — allow scaling the containers depending on application requirements;
- general-purpose configuration of the infrastructure — support and portability across different cloud service providers; Kubernetes configuration is running on Amazon Web Services, Microsoft Azure, Google Cloud Platform that makes it easier to select the optimal pricing along with meeting the GDPR compliance needs;
- GPU scheduling solution for Machine Learning; enables the scale-up process of training an ML model and inference deployment to multi-cloud GPU clusters.
Modern application architecture approach
A software application nowadays is an advanced system that assures high availability and reliability under a wide range of conditions like system fault or dynamically changing load.
The need to handle a massive amount of data without the time losses in a performance led our team to adopt Kubernetes for building scalable applications to provide the best customer experience available today.
*at this point, the diagram represents the Kubernetes cluster structure for SoilMate’s MVP version we have today. We plan to develop our solution, so the updates are coming!
Solving container orchestration with Kubernetes
An automated orchestrator should be introduced to the system to address this architectural challenge. The most popular tool for that purpose is Kubernetes, an open-source platform that automates Linux container operations. It eliminates many of the manual processes involved in deploying and scaling containerized applications.
Kubernetes automates the process of configuring, deploying, managing, and monitoring containerized applications of different scales. Acting as an operator, it manages the container lifecycle to provide high availability with load balancing and fault recovery by pre-defined rules and conditions.
Kubernetes for Machine Learning
This approach is especially useful in Machine Learning applications, as they are highly dependent on resource management and can bring their drain on resources. To introduce the flexibility of microservices to machine learning applications, Kubernetes has four capabilities: scalability, GPU support, data management, and infrastructure abstraction.
Kubernetes meets many of the computational challenges by orchestrating workflow through containers. It allows data scientists scalable access to CPUs and GPUs that automatically increase when the computation requires a spike of activity and scales back down when the task is finished.