As discussed in chapter 11, etcd is a key/value store with strong consistency guarantees. It’s similar to ZooKeeper, which is used for popular technologies like HBase and Kafka. A Kubernetes cluster at its core consists of
These components all speak to one another by updating the API server. For example, if the scheduler wants to run a Pod on a specific node, it does so by modifying the Pod’s definition in the API server. If, during the process of starting a Pod, the kubelet needs to broadcast an event, it does so by sending the API server a message. Because the scheduler, kubelet, and controller manager all communicate through the API server, this makes them strongly decoupled. For example, the scheduler doesn’t know how a kubelet runs Pods, and the kubelet doesn’t know how the API server schedules Pods. In other words, Kubernetes is a giant machine that stores the state of your infrastructure at all times in the API server.