ข้ามไปเนื้อหาหลัก
คอนเทนเนอร์· ~11 นาที· อัปเดตล่าสุด

ส่วนประกอบของ 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 เปลี่ยนตลอด

อ่านจบแล้วอย่าลืมทำเครื่องหมาย