Cloud computing created a fundamental change in the way we use and manage computer resources. Not only did it change how we think about deployment, but it also made it possible to run applications at scale.
As cloud computing has evolved, containerized applications took development by storm, allowing for faster and more secure creation and deployment. Additionally, it offered developers the ability to create cloud-based applications as containerized microservices - breaking down complex applications into smaller, more specialized, and manageable services.
In this article, we investigate Kubernetes - an open-source system for container orchestration - and examine how it can help run containers in the cloud. We also share how Lendscape uses Kubernetes to run Lendscape Asset Finance services.
Kubernetes is a powerful tool for managing containerized applications. It is an open-source system that helps you deploy, scale, and manage containerized apps on top of physical or virtual machines.
Kubernetes is a container orchestration system
In a previous article, The Rise of Containerisation, we saw that Docker containers allow a fluent way to deploy and run portable, self-contained software services packaged as Docker images isolated from the hosting operating systems.
Ultimately, Kubernetes is a tool for managing containerised applications - a conductor that leads and coordinates a symphony of containers! It is a powerful tool that allows you to manage your containers and grants you the ability to scale them up or down as needed.
Let’s take a look at some of the ways that Kubernetes can help you run containers in the cloud.
Containers enable portability across machines
One of the notable advantages of containers is portability. Containers enable portability across machines and platforms because they are entirely isolated from the underlying operating system.
Think about it: if a developer can write code in their local environment - and run that code on any machine - then all they need to do is move the container from one machine to another. It enables developers to develop and test their applications on one machine and then confidently run the same application on any platform that supports the container.
Docker is a popular container engine
Docker is a tool for managing containers. It handles the detail of how you create, run, and deploy containers on the machine where they run. This is important and means that Docker can work well with any system or environment.
You can use Docker to create a container that contains an application and all its dependencies. You then put this container on your computer or in a cloud service like AWS or Azure. When you need to run the application again, you launch another instance of the same container image (or 'docker image').
Docker makes it easy for developers to work on new applications by providing them with an isolated environment in which they can build their software without affecting other parts of the system (for example, if there is an issue with their code). It also helps operations teams manage containers across many machines, as they do not have to worry about configuring each server. Instead, their sole focus is to launch and manage images from repositories - such as Docker Hub (previously, Docker Repository).
Kubernetes can run containers across many different machines
Kubernetes can run containers across many different machines and cloud providers - including Google Cloud, Amazon Web Services, Microsoft Azure, or your own hardware. Kubernetes also provides a way to manage a hybrid environment where some applications run in the cloud, and others run on your own hardware in an office building or data centre.
Kubernetes is designed to be extensible so that you can add your own custom functionality, such as monitoring or logging at any time, without changing the core Kubernetes code. It means that even if you do not want all of the features provided by Kubernetes today, you will still be able to take advantage of them when they become available as open-source projects supported by the community.
Kubernetes makes it easy to manage microservices
Kubernetes is a great way to manage microservices because it is flexible and easy to use - allowing you to deploy and scale your containers quickly and easily. Furthermore, it can be used to manage dynamic, ephemeral containers with no downtime since Kubernetes has built-in tools for disaster recovery.
Avoiding cloud vendor lock-in
Although cloud providers can run containers, historically, each has proprietary methods for configuring and managing them that can lead to portability problems. For example, setting up a containerised application using AWS proprietary tools on AWS could lead to cloud vendor lock-in as moving to Microsoft Azure would typically require re-investment in Azure tools.
Kubernetes provides a cross-cloud framework that allows you to reuse tools and techniques across different cloud vendors. Instead of committing to a single cloud provider's native cloud tools, Kubernetes grants developers the ability to run an application on multiple clouds without difficulty. Cloud providers can abstract their cloud services (firewalls, cloud databases, load balancers, storage etc.) behind portable Kubernetes concepts.
Lendscape Asset Finance and cloud computing
The Lendscape Asset Finance application is cloud-first by using Docker container technology and Kubernetes to run in cloud infrastructures. To be flexible and adaptable to client requirements, Lendscape Asset Finance supports running on all major cloud platforms.
Lendscape software delivery is through a standard Docker image registry service. Kubernetes descriptors will select the Docker image (and instance count) that should run in a cluster. Cloud and Kubernetes load balancers will route and distribute traffic to the correct container.
Lendscape configures the cluster across multiple physical sites to support high availability and disaster recovery. A cloud platform's native service, such as persistent storage, log management, load balancers or relational databases, will be accessible through Kubernetes cluster definitions.
Using Kubernetes offers clear benefits and is a powerful tool for managing containerized applications. Whether managing containers within a single machine or across many machines, it facilitates the deployment of microservices in your system. Lendscape uses Kubernetes to run and manage Lendscape Asset Finance to provide a scalable, robust, and fault-tolerant service.
Author: Todd Sproule, Principle Developer, Lendscape