Kubernetes Components
When you deploy a Kubernetes cluster, what you are deploying are nodes, which run the containerised applications.
Each cluster has two types of nodes:
- Master node(s) host the Kubernetes Control Plane that controls and manages the whole Kubernetes system
- Worker node(s) host the pods which are the components of the application.
graph TD subgraph WN[Worker Node] direction LR kubelet[kubelet] runtime[Container Runtime] proxy[kube-proxy] end subgraph MN[Master Node] direction LR api[kube-apiserver] etcd[etcd] scheduler[kube-scheduler] controller[kube-controller-manager] end
Kubernetes Control Plane
The Control Plane controls the cluster and makes it function.
It has the following components:
- kube-apiserver which you and the other Control Plane components communicate with
- etcd a reliable distributed data store that persistently stores the cluster configuration.
- kube-scheduler watches for newly created Pods with no assigned node, and selects a node for them to run on.
- kube-controller-manager which performs cluster-level functions, such as replicating components, keeping track of worker nodes, handling node failures, and so on
Node Components
- kubelet an agent, which runs on each node in the cluster and talks to the API server and manages containers on its node
- kube-proxy which load-balances network traffic between application components
- Container runtime : docker, rkt, etc.
Paths into this note
1 note leads here
-
When we run commands (kubectl) it talks to API server. Other Kubernetes Components like etcd (DB), scheduler, etc talk to API server. All this is control plane.