Wednesday, August 27, 2025

Kubernetes : What are three main processes in worker nodes?

 Below given is detail on this 


1. Container Runtime (e.g., containerd, CRI-O, Docker in older setups)

• Actually runs the containers inside Pods.

• Pulls images, starts/stops containers, manages container lifecycle.

2. Kubelet

• The primary Kubernetes agent running on each Node.

• Talks to the API Server to get Pod specs.

• Ensures that the described containers (via Pod specs) are running in the Container Runtime.

• Collects resource usage stats and reports back to the control plane.

• Handles liveness & readiness probes.

3. Kube-proxy

• Handles Service networking on each Node.

• Implements iptables / IPVS rules so traffic to a Service IP gets forwarded to the right Pod.

• Provides basic L4 load balancing.

• Does “intelligent routing” → e.g., if a Pod needs to connect to a DB Service, kube-proxy tries to send traffic to a Pod of the DB that may be local (same node), reducing cross-node networking overhead.


⸻


🔹 Elaborated View

• When the API Server assigns a Pod to a Node:

• The Kubelet gets the PodSpec.

• Kubelet tells the Container Runtime to pull the image and run the container.

• Kube-proxy ensures that when traffic comes to a Service, it gets routed to the Pod correctly, even if it is across Nodes.

• This triad ensures Pods run, stay healthy, and can communicate seamlessly.


⸻


🔹 Communication Flow (Sequence Diagram)


Paste this in Mermaid Live Editor:


sequenceDiagram

    participant APIServer as Kubernetes API Server (Control Plane)

    participant Kubelet as Kubelet (Node Agent)

    participant CR as Container Runtime (containerd / CRI-O)

    participant KubeProxy as Kube-proxy (Service Routing)

    participant Pod as Pod/Container (App + DB)


    APIServer->>Kubelet: Assign PodSpec (App Pod needs to run)

    Kubelet->>CR: Pull image & start container

    CR->>Kubelet: Container started successfully

    Kubelet->>APIServer: Pod status updated (Running)


    Note over Kubelet,CR: Kubelet ensures Pod lifecycle <br> (start, monitor, restart if needed)


    Pod->>KubeProxy: Request DB Service

    KubeProxy->>Pod: Routes to local DB Pod if available

    KubeProxy->>OtherNode: Or forwards traffic to DB Pod on another node

    OtherNode-->>Pod: Response from DB


    Note over KubeProxy,Pod: Kube-proxy provides L4 load balancing <br> and Service-to-Pod resolution

⸻

✅ Summary:

• Kubelet = makes sure containers match what’s declared in API server.

• Container Runtime = actually runs the containers.

• Kube-proxy = makes sure services → pods traffic is routed correctly across nodes, while trying to optimize locality.

⸻




No comments:

Post a Comment