Key functionality for container deployment is provided at the orchestration and scheduling layers. The orchestration layer interfaces with the application, keeping the containers running in the desired state and maintaining SLAs. Scheduling places the containers on the most optimal hosts in a cluster, as prescribed by the requirements of the orchestration layer. These layers could be provided by different tooling (e.g., Apache Mesos providing the scheduling, while Marathon provides the orchestration) or by a single tool (Kubernetes or Docker Swarm). Kubernetes has emerged as the de facto standard for container orchestration, with a vibrant community and support from most of the leading commercial vendors. Customers deciding between orchestration engines or across various Kubernetes distributions need to identify the right product by comparing them across the following factors:
- Depth and breadth of support for OS and container runtime
- Runtime stability of the overall product
- Degree of support for stateful applications
- Operational simplicity and quality of vendor support
- Leadership, involvement and support for open source
- Implementation and licensing costs
- Hybrid and multicloud support
- Define the baseline requirements for security controls, monitoring, policy management, data persistence, networking and life cycle management of containers.
- Capture your container orchestration requirements across the factors mentioned above and choose the tool that best matches your requirements and use cases.
- Use Gartner research (see “How to Choose Your Kubernetes Deployment Model”) to understand the trade-offs between different Kubernetes deployment models, and choose the one that is best-suited to your environment.
- Prioritize vendors that can provide hybrid orchestration for container workloads across multiple environments with tight integration to back ends, federated management planes and consistent pricing models.