Container orchestrators¶
Container - an application-centric method to deliver high-performing, scalable application on any infrastructure. Container image - bundles the application with its runtime, dependencies. Containers can be deployed from a specific image on many platforms, such as: workstations, virtual machines, public cloud etc.
Container orchestrators are tools which group systems together to form clusters where containers' deployment and management is automated at scale while meeting the requirements: - Fault-tolerance - On-demand scalability - Optimal resource usage - Auto-discovery to automatically discover and communicate with each other - Accessibility from the outside world - Seamless updates/rollbacks without any downtime.
Container orchestratration tools
- Amazon Elastic Container Service
Amazon Elastic Container Service (ECS) is a hosted service provided by Amazon Web Services (AWS) to run containers at scale on its infrastructure.
- Azure Container Instances
Azure Container Instance (ACI) is a basic container orchestration service provided by Microsoft Azure.
- Azure Service Fabric
Azure Service Fabric is an open source container orchestrator provided by Microsoft Azure.
- Kubernetes
Kubernetes is an open source orchestration tool, originally started by Google, today part of the Cloud Native Computing Foundation (CNCF) project.
- Marathon
Marathon is a framework to run containers at scale on Apache Mesos and DC/OS
- Nomad
Nomad is the container and workload orchestrator provided by HashiCorp.
- Docker Swarm
Docker Swarm is a container orchestrator provided by Docker, Inc. It is part of Docker Engine.
Most container orchestrators can:
- Group hosts together while creating a cluster.
- Schedule containers to run on hosts in the cluster based on resources availability.
- Enable containers in a cluster to communicate with each other regardless of the host they are deployed to in the cluster.
- Bind containers and storage resources.
- Group sets of similar containers and bind them to load-balancing constructs to simplify access to containerized applications by creating an interface, a level of abstraction between the containers and the client.
- Manage and optimize resource usage.
- Allow for implementation of policies to secure access to applications running inside containers.
The managed Kubernetes as-a-Service solution: Amazon Elastic Kubernetes Service (Amazon EKS), Azure Kubernetes Service (AKS), DigitalOcean Kubernetes, Google Kubernetes Engine (GKE), IBM Cloud Kubernetes Service, Oracle Container Engine for Kubernetes, or VMware Tanzu Kubernetes Grid.