- in a kubernetes we call each member of the cluster a node
- inside the cluster we call each group of application a pod
There is two types of node :
- Controller (master) -> this node control the cluster
- Worker -> this node host your application

on this type of node there is differenet component that you cluster absolutly need for work
- the ETCD : is a key value store database that host all the information of the cluster pods nodes ingress status etc ...
- the Controller Manager : Watch the status of the cluster and perform remediation like if a pod crash or a node crash. He work for a healthy status of the cluster
- the Kube-apiserver : responsable of operating all the cluster Communication between all node and the administation team
- the kube-scheduler he decide on wich node the pod are going to be create
all this component need a container Runtime like docker or rocket so EACH node of the cluster required the same container runtime (actually containerd is a good option)
Every Node has a captain (kubelet) even the controller node
- the captain manage all activity on the node
- he send information to master with the kube-apiserver
- he run/create pod on himself control by kube-apiserver
- the monitoring is with the kub-apiserver and the infromation send by every KUBELET
- the worker just send information to master with kubelet
- and respond to the order of the scheduler for create the good pods
How different Pods can communicatie even if there are not on the same Nodes ?
- On each nodes there is a pods like the kubelet name kube-proxy
- this component ensure that all pod that need to communicate can
- he enable the required network rules like a firewall
kodecloud