The kubelet is a core Kubernetes component that runs on each node in the cluster. It acts as the node’s agent, responsible for managing the lifecycle of the pods and containers assigned to it. It carries the following responsibilities:

  1. Pod Management: The kubelet ensures that the pods scheduled to the node are running as expected. It continuously monitors their status and restarts containers if they fail.
  2. Container Runtime Integration: It communicates with the Container Runtime (e.g., Containerd, CRI-O, or Docker) to start and stop containers as instructed by the Kubernetes control plane.
  3. Health Monitoring: The kubelet checks the health of pods and containers through liveness and readiness probes defined in the pod specs.
  4. Metrics Reporting: It exposes resource usage metrics like CPU and memory for the Metrics Server and other monitoring tools.
  5. Node Registration: When the kubelet starts, it registers the node with the Kubernetes API server, making it available for scheduling workloads.
  6. Configuration Management: The kubelet pulls configuration updates from the API server, such as pod definitions or ConfigMaps, and ensures the node follows those instructions.

Kubelet exposes metrics and detailed information about nodes and pods through a GRPC API. By default, the kubelet runs its API server on port 10250 and serves gRPC over HTTPS.