Kubernetes: Where Are We Going?
This is the second of two blogs examining the history and future of Kubernetes. For more information, check out our e-book Kubernetes: The Future of Infrastructure. In our last blog, we explored the rise of containers and how they created a need for container orchestration tools like Kubernetes. In this blog, we’ll explore where Kubernetes and container orchestration as a whole will take us.
The future of Kubernetes is intimately tied to the future of containers and microservices. While it’s possible to transition to microservices without containers, the benefits are not as pronounced. Containers offer finer-grained execution environments, better server utilization, and better response to workloads that are less predictable, however, robust container orchestration is essential to take full advantage of these benefits. Kubernetes facilitates container adoption by providing robust orchestration for running deployments with thousands of containers in production, which is critical for a microservices architecture. This is likely a key driver of why a recent survey by The New Stack reported that 60% of respondents who deployed containers in production rely on Kubernetes for orchestration. For companies adopting containers, K8S automates many of the painful manual tasks and infrastructure complexity associated with deploying, scaling, and managing containerized applications. Simply put, Kubernetes addresses many of the core questions and challenges associated with deploying a container-based microservices architecture.
Common questions that are addressed by Kubernetes include:
- How do we design applications that may consist of many moving parts, but can still be easily deployed and orchestrated?
- How can we design applications that can be easily moved from one cloud to another?
- How can we keep storage consistent with multiple instances of an application?
- How can we ensure load is evenly distributed across all containers?
- How can we reuse our existing technical skills and techniques on application development and design without deep diving into other areas that can slow us down?
Kubernetes and the Future of Microservices Architectures
Since microservices allow for applications to be engineered into smaller independent services that don’t depend on a specific coding language, application components can be combined to offer the full breadth of functionality of a traditional monolithic application. To accomplish this, however, components must be properly monitored and managed across systems. Without effective orchestration tools, container monitoring and management would become highly taxing for DevOps teams as the number of microservices proliferates across systems. Kubernetes solves this problem by being vendor agnostic, meaning it can function as a single fabric for orchestrating containers across all our systems. This allows us to have multiple teams building various components across languages and systems without any compatibility issues. For example, we can have a team running a microservice in Ruby with a container running on Kubernetes communicate seamlessly with a microservice built-in Python running in a container via Kubernetes, regardless of whether those containers are on-prem or in the cloud. This affords numerous advantages to development teams as they’re able to easily push containers from on-prem environments to the cloud, across clouds, and back again. This flexibility substantially reduces the risk of vendor lock-in and provides developers with the freedom to run workloads where they want without concern for compatibility.
We’ve talked about how Kubernetes allows us to address key considerations for deploying containers in production, but beyond this, Kubernetes is also paving the way for organizations to transition from VMs to containers. Kubernetes offers a growing ecosystem of out-of-the-box tools, such as monitoring tools, CI/CD tools, and many others that natively support Kubernetes. As a result, the decision to use Kubernetes is not solely based on how it performs in production, but also how it provides an organization with a path to adopting containers. The Kubernetes ecosystem offers all the building blocks for everything we need to leverage containers to build out a rock solid microservices architecture. Consequently, as the Kubernetes ecosystem matures it’s likely that container and microservices adoption will further accelerate.
Alternatives to K8S
There are a couple of other tools that also provide container orchestration capabilities. The two biggest players competing with Kubernetes are Docker Swarm and Mesosphere DC/OS. Docker Swarm is an easier-to-use option, which hits Kubernetes where they receive the most criticism around being very complex to deploy and manage. Mesosphere DC/OS is a container orchestrator that was designed for big data. It was designed to run containers alongside other workloads such as machine learning and big data and offers integrations with related tools such as Apache Spark and Apache Cassandra.
Overall, Kubernetes is currently the most broadly adopted and mature of container orchestration tools, as evidenced by the number of community contributors and enterprise adoption. The keys to K8S success has been the ability to provide not only the building blocks for launching and monitoring containers but also their efforts on creating different sets of container use cases on top of their platform to address different types of advanced workloads. In Kubernetes for example, we can find native objects, native entities within the system that allow us to start a daemon, or to start a container, or to start a database. For other solutions, there is no distinguishing between containers that are running something that could be destroyed at any time.
The Future is Bright
Containers are rapidly taking over the world of software development, and the momentum behind Kubernetes is accelerating. It has become the go-to container orchestrator through its deep expertise, enterprise adoption, and robust ecosystem. With a growing number of contributors and service providers backing it, Kubernetes will continue to improve and expand upon its functionality, the types of applications it can support, and integrations with the overarching ecosystem. The combination of these factors will further accelerate and enhance the use of containers and microservices to fundamentally reshape the way in which software is developed, deployed, and improved upon. Further, as container orchestration and microservices continue to mature, they will open the door to the adoption of new deployment patterns, development practices, and business models.
Check out our ebook on Kubernetes