Kubernetes Architecture
Kubernetes มีสถาปัตยกรรมที่ประกอบด้วยหลายส่วนที่ทำงานร่วมกันเพื่อจัดการแอปพลิเคชันคอนเทนเนอร์ได้อย่างมีประสิทธิภาพ สถาปัตยกรรมของ Kubernetes ถูกออกแบบมาเพื่อรองรับการปรับขยายและการทำงานแบบกระจายระบบ
ส่วนประกอบหลักของ Kubernetes
1. Control Plane
Control Plane เป็นส่วนที่รับผิดชอบในการจัดการและควบคุมการทำงานของคลัสเตอร์ทั้งหมด ประกอบด้วยองค์ประกอบต่อไปนี้:
-
API Server
- ทำหน้าที่เป็นประตูหลักในการสื่อสารกับ Kubernetes โดยรับคำสั่งจากผู้ใช้หรือเครื่องมืออื่นผ่าน API
- ใช้โปรโตคอล HTTP/REST เพื่อจัดการทรัพยากรในคลัสเตอร์
-
Scheduler
- ทำหน้าที่กำหนดว่าจะรัน Pods บน Node ใด โดยพิจารณาจากข้อกำหนดทรัพยากร (Resource Requests) และเงื่อนไขต่าง ๆ
-
Controller Manager
- ประกอบด้วยชุดของ Controllers เช่น Node Controller, Replication Controller, และ Endpoint Controller ที่ทำหน้าที่ดูแลสถานะของระบบให้ตรงกับการตั้งค่าที่กำหนดไว้
-
etcd
- ฐานข้อมูลแบบ Key-Value ที่เก็บข้อมูลการตั้งค่าและสถานะของคลัสเตอร์ทั้งหมด
2. Nodes
Nodes เป็นเครื่องคอมพิวเตอร์ที่ใช้รันแอปพลิเคชันในรูปแบบของคอนเทนเนอร์ โดยแบ่งออกเป็นสองประเภทหลัก:
-
Master Node
- ใช้สำหรับควบคุมและจัดการคลัสเตอร์ รวมถึงรัน Control Plane
-
Worker Node
-
รัน Pods และมีองค์ประกอบสำคัญดังนี้:
-
Kubelet
- Agent บน Worker Node ที่ใช้สำหรับการสื่อสารกับ Control Plane และจัดการ Pods
-
Kube Proxy
- จัดการการสื่อสารเครือข่ายระหว่าง Pods และการเข้าถึงจากภายนอก
-
Container Runtime
- ซอฟต์แวร์ที่ใช้รันคอนเทนเนอร์ เช่น Docker, containerd หรือ CRI-O
-
-
3. Persistent Storage
Kubernetes รองรับการจัดการข้อมูลที่ต้องคงอยู่ถาวรโดยใช้ Persistent Volumes (PVs) และ Persistent Volume Claims (PVCs) ซึ่งช่วยในการจัดการข้อมูลที่เก็บอยู่นอกคอนเทนเนอร์
4. Networking
ระบบเครือข่ายของ Kubernetes ถูกออกแบบมาให้ Pods สามารถสื่อสารกันได้โดยไม่จำเป็นต้องตั้งค่าพิเศษใด ๆ ประกอบด้วย:
-
Cluster IP
- ใช้สำหรับการสื่อสารภายในคลัสเตอร์
-
NodePort
- เปิดพอร์ตบน Node เพื่อให้การเข้าถึงจากภายนอก
-
LoadBalancer
- ใช้เพื่อแจกจ่ายทราฟฟิกไปยังหลาย Pods
-
Network Policies
- กำหนดกฎสำหรับควบคุมการสื่อสารระหว่าง Pods
ภาพรวมการทำงาน
-
การ Deploy แอปพลิเคชัน ผู้ใช้เขียนไฟล์ YAML เพื่อกำหนดทรัพยากร เช่น Deployment, Service และ ConfigMap จากนั้นใช้
kubectlเพื่อ deploy ไปยังคลัสเตอร์ -
การปรับแต่งและการควบคุม Control Plane จะรับคำสั่งจากผู้ใช้และจัดการสถานะของระบบให้ตรงกับการตั้งค่า
-
การจัดการทรัพยากร Scheduler จะทำการจัดสรร Pods ไปยัง Nodes ที่เหมาะสมตามทรัพยากรที่มีอยู่
-
การฟื้นฟูระบบอัตโนมัติ หาก Pods ล้มเหลว Controller Manager จะสร้าง Pods ใหม่เพื่อให้คลัสเตอร์ทำงานได้อย่างต่อเนื่อง
Kubernetes Architecture ถูกออกแบบมาให้ยืดหยุ่นและรองรับการทำงานที่ซับซ้อนในระบบคลาวด์ โดยการเข้าใจโครงสร้างนี้จะช่วยให้คุณสามารถจัดการและปรับแต่งคลัสเตอร์ได้อย่างมีประสิทธิภาพ