1 Introduction

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. 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, in the general sense, 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 in particular, and a distributed system in general

1.1 The (Not So) Good 'Ol Days

Let’s take a journey back to 2002 and meet Michelle. Michelle is a system administrator for her company, and she is responsible for keeping her company’s applications up and running around the clock. How does she accomplish this?

1.2 What is an orchestrator?

1.3 The components of an orchestration system

1.3.1 The Task

1.3.2 The Job

1.3.3 The Scheduler

1.3.4 The Manager

1.3.5 The Worker

1.3.6 The Cluster

1.4 Why implement an orchestrator from scratch?

1.5 Meet Cube

1.6 What tools will we use?

1.7 A word about hardware

1.8 What we won’t be implementing

1.9 Summary