ส่วนประกอบของ Control Plane
API server, etcd, Scheduler, Controller Manager ทำหน้าที่อะไร
Control Plane ไม่ใช่แค่ก้อนเดียว แต่ประกอบไปด้วยส่วนประกอบย่อยๆ ที่ทำงานร่วมกันเหมือนทีมบริหารในบริษัท
ถ้า control plane คือสำนักงานใหญ่ แต่ละแผนกมีหน้าที่ต่างกัน: API server = แผนกต้อนรับ (ทุกคำขอเข้าทางนี้), etcd = ห้องเก็บเอกสารกลาง, Scheduler = ฝ่ายจัดที่นั่ง, Controller Manager = หัวหน้าที่คอยตรวจว่าทุกอย่างเป็นไปตามแผน
ทุกคำสั่งผ่าน API server → เขียนลง etcd → component อื่นทำงานต่อ
kube-apiserver — ประตูหน้าเดียวของคลัสเตอร์
kube-apiserver: คือ ศูนย์กลางการสื่อสาร ทุกคำสั่ง (จาก kubectl, จาก component อื่น, จาก dashboard) ต้องผ่าน API server มันจะตรวจสิทธิ์ ตรวจความถูกต้อง แล้วบันทึกลง etcd
etcd — ความจำของคลัสเตอร์
etcd (อ่านว่า เอ็ต-ซี-ดี): คือ ฐานข้อมูลแบบ key-value ที่เก็บ สถานะทั้งหมดของคลัสเตอร์ (มี Pod อะไร ตั้งค่าไว้ยังไง อยู่ที่ไหน) · ถ้า etcd หาย = คลัสเตอร์เสียความจำทั้งหมด จึงต้อง backup อย่างดี
kube-scheduler — ฝ่ายจัดที่นั่ง
kube-scheduler: คือ ผู้ที่ดูว่ามี Pod ใหม่ที่ยังไม่มีบ้าน แล้วเลือกว่าจะวางลง node ไหน โดยพิจารณาทรัพยากรที่ว่าง (CPU/RAM) และกฎต่าง ๆ · มันแค่ "ตัดสินใจ" ว่าจะไปเครื่องไหน ไม่ได้เป็นคนรันเอง
kube-controller-manager — ผู้เฝ้าให้ตรงแผน
kube-controller-manager: คือ ตัวรวมชุด controller ที่แต่ละตัววนเทียบสิ่งที่อยากได้ (desired state) กับสิ่งที่เป็นอยู่ (current state) ตลอดเวลา เช่น สั่งไว้ว่าต้องมี 3 Pod แต่เหลือ 2 (ตัวหนึ่งล่ม) controller จะสั่งสร้างเพิ่มให้ครบ 3 — นี่คือกลไก self-healing ที่ทำงานจริง
สรุป Key Takeaways
- API server = ประตูเดียวที่ทุกคำขอผ่าน (auth + validate + เขียนลง etcd)
- etcd = ที่เก็บสถานะทั้งหมดของคลัสเตอร์ ต้อง backup
- Scheduler = ตัดสินใจว่า Pod ใหม่ไปอยู่ node ไหน
- Controller Manager = วนเทียบ desired vs current แล้วแก้ให้ตรง (self-healing)
คำถามที่พบบ่อย
etcd สำคัญยังไง ทำไมใครๆ บอกให้ backup
etcd คือฐานข้อมูลเดียวที่เก็บสถานะทั้ง cluster — ทุก object ทุก config อยู่ในนั้น เสีย etcd = เสีย cluster ทั้งวง จึงต้อง backup สม่ำเสมอและรันเป็นวงคี่ (3/5 ตัว) เพื่อ quorum — ใน managed K8s ผู้ให้บริการจัดการให้
API server เป็นศูนย์กลางยังไง
ทุกอย่างคุยผ่าน API server เท่านั้น — kubectl, scheduler, controller, kubelet ไม่มีใครแตะ etcd ตรง — มันคือด่าน authentication/authorization/validation ของทุกคำสั่ง ทำให้มีจุดคุมความปลอดภัยจุดเดียวที่ชัดเจน
Scheduler กับ Controller Manager ต่างกันยังไง
Scheduler ตอบคำถามเดียว: pod ใหม่ควรลงเครื่องไหน (ดู resource, affinity, taint) ส่วน Controller Manager รันลูปเฝ้าสถานะ: replica ครบไหม node ตายไหม แล้วสั่งแก้ให้ตรง desired state — คนหนึ่งเลือกที่อยู่ อีกคนรักษาสัญญา

