รู้จักกับ Master Node และ Worker Node ในโลกของ Kubernetes
ในระบบ Kubernetes นั้น Master Node และ Worker Node คือส่วนประกอบหลักที่ทำงานร่วมกันเพื่อจัดการและรันแอปพลิเคชันแบบ Container ครับ โดยมีบทบาทหน้าที่แตกต่างกันอย่างชัดเจน
Master Node
Master Node (หรือที่เรียกว่า Control Plane) เปรียบเสมือน "สมอง" หรือ "ผู้ควบคุม" ของคลัสเตอร์ ทำหน้าที่เป็นศูนย์กลางในการจัดการและควบคุมสถานะทั้งหมดของระบบ โดยไม่ได้รัน Container ของแอปพลิเคชันโดยตรง แต่จะทำหน้าที่บริหารจัดการ Workers Node ให้ทำงานตามที่ต้องการ
ส่วนประกอบหลัก:
- kube-apiserver: เป็น API Server หลักของ Kubernetes ใช้สำหรับจัดการคำสั่งและรับคำสั่งจากผู้ใช้หรือส่วนประกอบอื่น ๆ
- etcd: เป็นฐานข้อมูลแบบ Key-Value ที่ใช้เก็บข้อมูลสถานะปัจจุบันและข้อมูลการตั้งค่าทั้งหมดของคลัสเตอร์
- kube-scheduler: ทำหน้าที่จัดสรร (Schedule) Container ไปยัง Worker Node ที่เหมาะสมที่สุด
- kube-controller-manager: เป็นผู้ดูแลสถานะของระบบ ทำงานแบบวนลูปเพื่อให้สถานะของคลัสเตอร์เป็นไปตามที่ผู้ใช้กำหนด (Desired State)
- cloud-controller-manager (ถ้ามี): ทำหน้าที่จัดการทรัพยากรที่เกี่ยวข้องกับ Cloud Provider
ในระบบ Kubernetes นั้น Master Node และ Worker Node คือส่วนประกอบหลักที่ทำงานร่วมกันเพื่อจัดการและรันแอปพลิเคชันแบบ Container ครับ โดยมีบทบาทหน้าที่แตกต่างกันอย่างชัดเจน
Worker Node
Worker Node (หรือที่เรียกว่า Kubelet) เปรียบเสมือน "คนงาน" หรือ "เครื่องจักร" ที่ทำหน้าที่ รัน Container ของแอปพลิเคชันจริง ๆ โดยรับคำสั่งจาก Master Node
ส่วนประกอบหลัก
- kubelet: เป็น Agent ที่ทำงานบน Worker Node แต่ละตัว มีหน้าที่สื่อสารกับ Master Node และควบคุมการทำงานของ Container ที่อยู่บน Node นั้น ๆ
- kube-proxy: ทำหน้าที่จัดการเครือข่ายของ Container ทำให้สามารถสื่อสารระหว่างกันได้ และทำให้ Container สามารถเข้าถึงได้จากภายนอก
- Container Runtime: คือโปรแกรมที่ใช้รัน Container เช่น Docker หรือ containerd