kentoh - Fotolia
The IT industry eternally seeks the most scalable and efficient way to establish pools of hosting resources and connectivity -- and then map them to application deployment and operations. As a result, momentum has shifted away from VMs and toward containers.
Two models of container deployment, orchestration and operations have emerged: Mesos and Kubernetes.
Mesos is an Apache project that's absorbed Mesosphere's Marathon orchestrator and DC/OS, a container operating system. Mesos is not an orchestrator, but rather a distributed OS that provides a common abstraction for the resources on which it runs.
Kubernetes is a container orchestrator -- like Marathon -- that was developed from Google's Borg project.
Mesos was designed for scale and speed: If those are your goal, it's difficult to beat the Mesos ecosystem. However, Kubernetes has built an ecosystem of its own that is much broader and more active than Mesos'. Kubernetes lacks the proven scale and performance of Mesos, but its wide breadth of support means the pace of advancement in the Kubernetes space is unmatched.
So, does that mean Mesos users should consider a Kubernetes migration? Perhaps -- or maybe they should use both.
Using Mesos with Kubernetes
Mesos, combined with Marathon, is a better option for large-scale deployments; for enterprises that need to support many different classes of application technology, such as Java, containers and databases; and for stateful applications. There are Kubernetes ecosystem components for all of these tasks, but not at the same level of maturity, performance or scale. It makes sense for an organization to maintain its existing Mesos commitment if it's also sustaining a commitment to the applications that led to Mesos in the first place.
Don't presume a Kubernetes migration is necessary; enterprises can use Kubernetes orchestration on top of Mesos, which provides the benefits of both Mesos' scalability and performance and Kubernetes' thriving ecosystem and development community.
The combined use of the two platforms also lays the foundation for a full migration to Kubernetes, if that's the decision down the road.
When you evaluate Kubernetes, don't stop at orchestration; consider federated multi- and hybrid-cloud capabilities, as well as added features for service mesh and serverless functions. If your organization doesn't require all, or even most, of these elements, you might not be a candidate for Kubernetes -- at least not yet. But plan for these capabilities in the future.
Migration to a full-featured Kubernetes ecosystem, rather than using the platform solely for orchestration, isn't more complicated. Most Kubernetes ecosystem software will work fine if Kubernetes is run on top of Mesos and DC/OS.
Layering Kubernetes atop Mesos is a straightforward installation. Tailor the installation options to take advantage of high availability features and other Mesos capabilities. You'll still be able to use Mesos directly for frameworks, such as Apache Kafka for real-time event processing or the open source big data platform, Hadoop. Kubernetes apps can use Mesos services without issue, but the reverse is more difficult.
A migration from Mesos to Kubernetes
When considering a Mesos-to-Kubernetes migration, avoid changes in production until the container environment has reached -- and held -- a stable state. Use a small, separate Mesos cluster to test Kubernetes-over-Mesos functionality, and retain that testing environment until the migration is complete. Take each step in the migration with the test cluster first. This doesn't have to be a lab test cluster, just a separate application set to limit the scope of changes until proven operational.
The biggest step in terms of functionality and the effect on existing operations practices is a Kubernetes migration that replaces Mesos entirely; be sure the change is necessary. Often, an organization that had justification for Mesos at the start still has one, and running Mesos with Kubernetes is an acceptable environment long term. To fully drop Mesos, take it one service at a time, and at each step ensure that the Kubernetes version of that service is accessible to both Kubernetes and Mesos applications.
The adoption of Kubernetes, whether as an overlay on Mesos or a complete replacement, takes time. It takes even longer to plan for and adopt pieces of the Kubernetes ecosystem for multi- and hybrid cloud, service mesh and serverless. Maintain the test cluster carefully to validate new practices and features. As time passes, gradually integrate the test cluster into the mainstream app lifecycle management workflow -- as an integration test vehicle or a development framework, for example.
Keep track of the ongoing progress of both Kubernetes and Mesos. It's possible that, over time, the pace of Kubernetes' advancement will so outpace Mesos that compatibility between the two suffers. Alternatively, Mesos might add critical features and capabilities that shift things in the other direction. Keep careful records of the steps your organization takes to migrate to ensure it can undo or repeat them as the future of both products dictates.