What is the difference between kubelet and kube-proxy?
Quick Answer
kubelet is the node agent that makes pods run — it talks to the container runtime, reports node/pod health, and enforces the pod spec. kube-proxy programs the node's networking so traffic to a Service reaches the right pod backends.
Detailed Answer
kubelet runs on every node and is responsible for pods: it watches the apiserver for pods assigned to its node, tells the container runtime (via CRI) to pull images and start containers, runs liveness/readiness/startup probes, mounts volumes, and continuously reports status back. If a container fails a liveness probe, kubelet restarts it. kube-proxy is about Service networking: a Service is a stable virtual IP, and kube-proxy watches Services/Endpoints and programs the dataplane (iptables or IPVS, or it's replaced entirely by a CNI's eBPF like Cilium) so that connections to the Service IP are load-balanced across healthy pod IPs. In short: kubelet manages the *lifecycle* of pods on a node; kube-proxy manages *how Service traffic gets to* those pods.
Code Example
# kubelet decides restarts via probes
livenessProbe:
httpGet: { path: /healthz, port: 8080 }
periodSeconds: 10
# kube-proxy turns this Service VIP into pod-backend load balancing
# kubectl get endpoints my-svc -> the pod IPs it fans out toInterview Tip
One-liner that lands: 'kubelet runs pods; kube-proxy routes Service traffic to them.' Bonus points for noting modern CNIs (Cilium) can replace kube-proxy with eBPF.