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

ส่วนประกอบของ Control Plane

API server, etcd, Scheduler, Controller Manager ทำหน้าที่อะไร

Control Plane ไม่ใช่แค่ก้อนเดียว แต่ประกอบไปด้วยส่วนประกอบย่อยๆ ที่ทำงานร่วมกันเหมือนทีมบริหารในบริษัท

ทีมบริหารแห่ง Kubernetes

ถ้า control plane คือสำนักงานใหญ่ แต่ละแผนกมีหน้าที่ต่างกัน: API server = แผนกต้อนรับ (ทุกคำขอเข้าทางนี้), etcd = ห้องเก็บเอกสารกลาง, Scheduler = ฝ่ายจัดที่นั่ง, Controller Manager = หัวหน้าที่คอยตรวจว่าทุกอย่างเป็นไปตามแผน

ทุกคำสั่งผ่าน API server → เขียนลง etcd → component อื่นทำงานต่อ

kubectl
API serverประตูเดียว
etcdบันทึกสถานะ
component อ่านจาก API server
Schedulerเลือก node ให้ Pod
Controller Managerเทียบ desired vs current
cloud-controllerต่อบริการ cloud (EKS/GKE)
องค์ประกอบ control plane และเส้นทางคำสั่งจากผู้ใช้

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 — คนหนึ่งเลือกที่อยู่ อีกคนรักษาสัญญา

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