Table of Contents
Toggle
Control plane
Details
- responsible for maintaining the desired state
- Managing the cluster
- Scheduling pods
- Hosting Kubernetes objects
- Monitoring the worker nodes
ETCD
- Distributed key-value store
- Stores data about Kubernetes objects
- Any changes happening to the nodes/pods/services..etc… Will be updated in the etcd
- We don’t interact directly with etcd. But through the API server
API Server
- This exposes the Kubernetes API
- This is the main server to communicate with all the remaining components.
Controller manager
- Complies with multiple controllers in a single binary
- Watches the state of objects and takes remediation actions
- A few example of controllers are node controller or replication controller
- It watches the current state of each object and check the desired state. If the objects are not matching then associated controller will take action.
Scheduler
- Responsible for deciding which node and pod get scheduled
- It will take decision based on different factors like
- Node size
- Container resource requirement
- Taints
- Tolerations …etc.
Cloud Controller Manager
- This manager is available only for the hosted cloud
- This is the middleware for Kubernetes Api and cloud provider Api
- This will take care of the required resources management like creation/update/deletion of VM, load balancer, disks… etc.
Worker nodes
Details:
Run the containers in the pod
Kubelet
- This is an agent that runs on each worker node
- Monitor the health of the worker nodes
- Ensures containers run in a pod and they are health
- Communicates with the container runtime to manage the containers
Container runtime
- It’s software installed on every node to run the containers
- It communicates with kubelet to manage the containers like start/stop
- Containerd is the container runtime used in AKS
Kube-proxy
- This service runs on each node
- Used to maintain network rules on each node
- Also handles the network traffic to and from pods
- Configures iptables rules for services
- Communicate directly with API server
5/5