Building on discussions we’ve had previously in the Open Source Solutions (OSS) Partner Community, this month we’re taking a deeper look at containers and orchestration. For an introduction and background on this topic, I recommend reviewing the two blog posts linked below. And, sign up to join me on the next OSS Partner call on Tuesday, February 28 for a discussion.
The benefits of containers
The abstraction of the operating system layer provided by containers allows the efficient implementation of an immutable infrastructure. Containers let you package application code/binary as well as its dependencies, such as file system, registry, and network.
Advantages include:
- Consistency across development, test, and production
- Fast and agile application deployment; instant startup
- Cloud portability
- Density, partitioning, scale
Orchestration tools
Employing containers at scale in production requires management and infrastructure features:
- Container cluster deployment and management
- Container placement and management
- Scheduling and automation
- Service discovery and networking
- Monitoring and logging
Collectively, the technologies that provide these services are known as container orchestrators. There are three major open source container orchestration technologies: Docker Swarm, Kubernetes, and DC/OS.
Docker Swarm
The Docker container orchestration tool, called Docker Swarm, uses the standard Docker API and networking, making it easy to for developers who are already working with Docker containers.
Docker Swarm features include:
- Integrated networking and volumes
- Failover and high availability
- Flexible container scheduling, which allows filtering through node tags, affinity, and employs scheduling strategies like spread and binpack
- Support for scheduler plugins from Mesos or Kubernetes, while still using the Docker client for a consistent developer experience
- Support for multiple methods of node discovery
Kubernetes
Kubernetes is orchestration technology from Google that has been open sourced. Kubernetes was built from the ground up for scale and to work with containers and the cloud.
Kubernetes features include:
- Automatic resource management that places containers based on their resource requirements and other constraints, and manages container and node failures and health
- Service discovery and load balancing that provides containers their own IP addresses and a single DNS name for a set of containers, and can load-balance across them
- Automated rollouts to progressively roll out changes to your application or its configuration, while monitoring application health; automated rollbacks if a change causes an issue
- Secret and configuration management
- Support for storage orchestration, automatically mounting multiple storage systems such as local storage, public cloud provider storage, or network storage
DC/OS
DC/OS is designed for large scale clusters built open, and supports a diverse array of workloads including containers, big data, and traditional applications.
DC/OS features include:
- Proven scalability
- Fault-tolerant replicated master and slaves using Apache ZooKeeper
- Support for Docker-formatted containers
- Native isolation between tasks with Linux containers
- Multi-resource scheduling (memory, CPU, disk, and ports)
- Java, Python, and C++ APIs for developing new parallel applications
- A web UI for viewing cluster state
Azure Container Service
Azure Container Service optimizes the configuration of these three major orchestration technologies for Microsoft Azure. Choose the tools and solution that best fits your needs. If you have experience with one of the supported orchestrators, you can apply that experience in Azure Container Service. Data trends suggest that DC/OS is production proven for big data and IoT workloads, Kubernetes is suited for cloud-native workloads, and Docker Swarm is known for its integration with Docker.
Azure Container Service 101
Azure Container Service Engine
Microsoft has open sourced Azure Container Service code and configuration through the Azure Container Service Engine, a place for the community to collaborate and build the best open Docker container infrastructure for Azure. The Azure Container Service Engine enables power users to customize the Azure Container Service cluster configuration at every level. This ability to alter the configuration of both infrastructure and software means that we offer no service-level agreement for supporting the Azure Container Service Engine. Support is handled through the open-source project on GitHub. The Azure Container Service Engine also gives you previews of up-and-coming features, like support for managed disks.
Resources
- Azure Container Service page
- Azure Container Service training on Microsoft Virtual Academy
- Azure Friday Video: Scaling Azure Container Service
- Azure Friday Video: Kubernetes support in Azure Container Service
- Azure Friday Video: Using and maintaining a Kubernetes cluster in Azure Container Service
- Video: Continuous integration and continuous deployment for Docker on Azure Container Service
Community call about containers and orchestration tools on Tuesday, February 28
The Tuesday, February 28 call for partners with open source solutions practices will focus on containers and orchestration, with content about real-world solutions used by customers such as Disney and Technicolor.
Sign up for the February 28 partner call