Chapter 9
Here are the sample answers to the questions of this chapter:
- Here are some reasons why we need an orchestration engine:
- Containers are ephemeral and only an automated system (the orchestrator) can handle this efficiently.
- For high availability reasons, we want to run multiple instances of each container. The number of containers to manage quickly becomes huge.
- To meet the demand of today’s internet, we need to quickly scale up and down.
- Containers, contrary to VMs, are not treated as pets and fixed or healed when they misbehave, but are treated as cattle. If one misbehaves, we kill it and replace it with a new instance. The orchestrator quickly terminates an unhealthy container and schedules a new instance.
- Here are some responsibilities of a container orchestration engine:
- Manages a set of nodes in a cluster
- Schedules workload to the nodes with sufficient free resources
- Monitors the health of nodes and workload
- Reconciles current state with desired state of applications and components
- Provides service discovery and routing
- Load balances requests
- Secures confident data by providing support for secrets
- Here is an (incomplete) list of orchestrators, sorted by their popularity:
- Kubernetes by Google, donated to the CNCF
- SwarmKit by Docker—that is, Operations Support System (OSS)
- AWS ECS by Amazon
- Azure AKS by Microsoft
- Mesos by Apache—that is, OSS
- Cattle by Rancher
- Nomad by HashiCorp