If you are in the process of migrating your workloads to the cloud for the first time, you’ve likely come across the topic of containerization and microservices. Containerized applications in loosely-coupled microservices have largely become the standard for deploying workloads to the cloud and provide major advantages to handling operations regarding your services, as they let you manage each component independently. You can deploy, update, scale, and remove individual pieces of your software architecture as modular parts.
This approach to managing applications as individual components in containers is widespread. However, the task of actually coordinating and turning them into a complete infrastructure can be daunting. Several cloud providers, such as Amazon Web Services and Azure, offer managed solutions for deploying your containers (such as ECS, Fargate, and Container Instances). These types of managed container orchestration tools vary in complexity and knowledge required, but they all approach from the same angle of doing the heavy lifting for you.
Chances are you’ve heard of Kubernetes — the behemoth in the world of container orchestration, which has largely become the standard tool of choice. Unlike vendor-specific managed tools like Fargate, ECS, or Container Instances, Kubernetes is open source and can run on any cloud of your choice. As a newcomer looking to decide upon a container orchestration tool, you can think of the managed vendor-specific services (ECS, Fargate, Container Instances and so on) as being like Microsoft Windows or MacOS, and Kubernetes as being GNU/Linux. The managed vendor-specific services can provide some extra polish and less overhead at times, but this comes at the cost of vendor lock-in and all that entails — including the inability to easily switch providers down the road, inability to adapt the platform to your specific needs, and the inability to contribute back to the project itself.
In a word, Kubernetes provides flexibility. You can change out the underlying platform you run Kubernetes on. You can change out the cluster services you run on top of your cluster. You can use any variety of plugins that you’d like, and even add custom resources to your cluster. If you’re so inclined, you can even contribute back to the Kubernetes project and help improve it as you see fit. This all-around flexibility in Kubernetes mirrors that of GNU/Linux in many ways, and it is the reason why Kubernetes has become the standard container orchestration tool of choice in the same way that GNU/Linux has become the standard operating system of choice in many datacenters.
Kubernetes’ flexibility and open nature will continue to cement its competitive edge with time, as more and more companies and projects settle upon it as the de facto choice. Choosing Kubernetes as your container orchestration tool gives you all the benefit of this active ecosystem and the flexibility to adapt your cloud infrastructure as your demands change.
Of course, using a system that offers that much flexibility can present special challenges. At Fairwinds, we’re here to help guide you through the journey of migrating to Kubernetes at every step.