Kubernetes is a distributed cluster of Google's Docker based, with the following main components
ETCD: High-availability storage sharing configuration and service discovery, used as a companion to flannel on Minion machines, to enable Docker running on each minion to have different IP segments The ultimate goal is to make the Docker Containner running on different minion have an IP address that is not the same as any other Containner (Docker Containner running on another minion).
Flannel: Network architecture support
Kube-apiserver: Regardless of whether through KUBECTL or using Remote API Direct control, you have to go through Apiserver
Kube-controller-manager: To Replication controller, endpoints controller, namespace controller, and Serviceaccounts Controller's loop control, interacting with kube-apiserver to ensure that these controllers work
Kube-scheduler: The role of Kubernetes Scheduler is to dispatch the pod to the specified work node (minion) according to a specific scheduling algorithm, also known as bind (BIND)
kubelet: Kubelet runs on kubernetes minion node. It's a logical successor to the container agent.
kube-proxy: Kube-proxy is a component in the kubernetes that runs on the Minion node, and it serves as a Service Broker role
the diagram is Git+jenkins+kubernetes+docker+etcd+confd+nginx+glusterfs architecture :
Building Docker cluster environment based on Kubernetes