ส่วนประกอบของ Worker Node
kubelet, container runtime, kube-proxy บนเครื่องที่รัน Pod จริง
ในฝั่งของ Worker Node ก็มีโปรแกรมที่ต้องรันอยู่ตลอดเวลาเพื่อให้สามารถรับคำสั่งจาก Control Plane ได้
บนเครื่องลูกมือแต่ละเครื่องมีทีมเล็ก ๆ: kubelet = หัวหน้ากะประจำเครื่อง (รับใบสั่งจากสำนักงานใหญ่แล้วดูแลให้ Pod รันตามนั้น), container runtime = พ่อครัวที่ลงมือทำจริง, kube-proxy = พนักงานเดินโต๊ะ ที่จัดเส้นทางให้ลูกค้าเจอโต๊ะที่ถูก
kubelet — ตัวแทนของ control plane บนแต่ละ node
kubelet: คือ agent ที่รันบนทุก worker node คอยรับคำสั่งว่า node นี้ต้องมี Pod อะไรบ้าง แล้วไปสั่ง container runtime ให้รัน จากนั้นรายงานสถานะสุขภาพกลับไปที่ control plane เรื่อย ๆ
Container runtime — คนรัน container จริง
Container runtime: คือ ซอฟต์แวร์ที่ดึง image และรัน container จริง ๆ (เช่น containerd, CRI-O) · เมื่อก่อนเรามักคุ้นกับ Docker แต่ปัจจุบัน K8s ใช้ผ่านมาตรฐาน CRI (Container Runtime Interface)
kube-proxy — เครือข่ายบน node
kube-proxy: คือ ตัวจัดการกฎเครือข่ายบน node เพื่อให้ traffic ที่ยิงมาที่ Service ถูกส่งต่อไปยัง Pod ปลายทางที่ถูกต้อง (เป็นพื้นฐานของ service discovery ที่จะเรียนใน Module Networking)
สรุป Key Takeaways
- kubelet = agent บนทุก node ดูแลให้ Pod รันตามที่ control plane สั่ง + รายงานสุขภาพ
- Container runtime (containerd/CRI-O) = ตัวรัน container จริงผ่านมาตรฐาน CRI
- kube-proxy = จัดเส้นทางเครือข่ายให้ traffic ถึง Pod ที่ถูกต้อง
คำถามที่พบบ่อย
kubelet ทำหน้าที่อะไรบนแต่ละ node
เป็นตัวแทน control plane ประจำเครื่อง — รับสเปก pod ที่ถูก assign มา สั่ง container runtime ให้รันจริง คอยรายงานสถานะ node/pod กลับไป และรัน probe ตรวจสุขภาพ container — kubelet ตายเมื่อไหร่ node นั้นก็หายจากสายตา cluster
kube-proxy เกี่ยวอะไรกับ Service
kube-proxy บนทุก node คอยตั้งกฎ network (iptables/IPVS) ให้ traffic ที่ยิงเข้า Service IP ถูกกระจายไปยัง pod จริงเบื้องหลัง — เวลา pod เกิด/ตาย มันอัปเดตกฎให้เอง นี่คือกลไกที่ทำให้ Service "นิ่ง" ทั้งที่ pod เปลี่ยนตลอด

