Just finished the tutorial here: https://github.com/kelseyhightower/kubernetes-the-hard-way from the author of https://www.goodreads.com/book/show/26759355-kubernetes
Which basically goes through the setup of a bare bones kubernetes cluster without scripting the install/config of any of the components.
It’s a brilliant tutorial, simply because, so far we’ve been using the CoreOS and official Kubernetes “aws” scripts to create the clusters, which all produce very “pretty” clusters (with Kibana, Grafana etc… built in) but don’t do much in the way of HA or customizability (need specific subnets due to p2p VPN?)
So, thanks to the tutorial, I know that etcd is separate from kuberentes and used as a “database” and for leader election. The “controller” functions consist of three services (API, controller and scheduler) while the worker functions consist of two services (kubelet, kube-proxy) plus Docker and optionally you might want/have an “overlay” network over the whole lot to enable the Pods to talk to each other.
Also good, was learning about how the certificates/encryption work and that you probably really, really want the DNS in there.