Kubernetes Components
Control Plane
Kube-apiserver
- Exposes the Kubernetes API—front end to control plane
- Scales horizontally
Kube-scheduler
- Responsible for assigning Pods to nodes
- Looks at Pod resource requirements and node utilization
- Takes factors such as hardware/software/policy constraints into account when scheduling
Kube-controller-manager
- Runs Controller processes
- Examples:
- Node controller—watches and responds to nodes going down
- Job controller—watches for Jobs and creates Pods to run those tasks
- Endpoints controller—populates the Endpoint object (joins Services and Pods)
Cloud-controller-manager
- Embeds cloud-specific logic
- Links cluster to cloud provider’s API
Etcd
- Consistent, highly available key value store
- Backing store for all Kubernetes data
Nodes
Kublet
- Agent running on each node
- Ensures containers are running within a Pod—takes PodSpecs and ensures containers described within are running and healthy
Kube-proxy
- Network proxy
- Maintains network rules on nodes—allows network communication to Pods from network sessions inside or outside of the cluster
- Uses OS packet filtering layer if available, otherwise kube-proxy forwards traffic itself
Container Runtime
- Runtime responsible for running containers
- By default containerd
- Supports any implementation of the Kubernetes CRI (Container Runtime Interface)