chapter one

1 What is an orchestrator?

 

This chapter covers

  • The evolution of application deployments
  • Classifying the components of an orchestration system
  • Introducing the mental model for the orchestrator
  • Defining requirements for our orchestrator
  • Identifying the scope of our work

Kubernetes. Kubernetes. Kubernetes. If you’ve worked in or near the tech industry in the last five years, you’ve at least heard the name. Perhaps you’ve used it in your day job. Or, perhaps you’ve used other systems such as Apache Mesos or Hashicorp’s Nomad.

In this book, we’re going to build our own Kubernetes, writing the code ourselves in order to gain a better understanding about just what Kubernetes is. And what Kubernetes is—​like Mesos and Nomad—​is an orchestrator.

When you’ve finished the book, you will have learned the following:

  • What components form the foundation of any orchestration system
  • How those components interact
  • How each component maintains its own state and why
  • What tradeoffs are made in designing and implementing an orchestration system

1.1 Why implement an orchestrator from scratch?

1.2 The (Not So) Good 'Ol Days

1.3 What is a container and how is it different from a virtual machine?

1.4 What is an orchestrator?

1.5 The components of an orchestration system

1.5.1 The Task

1.5.2 The Job

1.5.3 The Scheduler

1.5.4 The Manager

1.5.5 The Worker

1.5.6 The Cluster

1.5.7 CLI

1.6 Meet Cube

1.7 What tools will we use?

1.8 A word about hardware

1.9 What we won’t be implementing or discussing

1.9.1 Distributed computing

1.9.2 Service discovery

1.9.3 High availability