Skip to main content

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

ภาพรวมการทำงาน

  1. การ Deploy แอปพลิเคชัน ผู้ใช้เขียนไฟล์ YAML เพื่อกำหนดทรัพยากร เช่น Deployment, Service และ ConfigMap จากนั้นใช้ kubectl เพื่อ deploy ไปยังคลัสเตอร์

  2. การปรับแต่งและการควบคุม Control Plane จะรับคำสั่งจากผู้ใช้และจัดการสถานะของระบบให้ตรงกับการตั้งค่า

  3. การจัดการทรัพยากร Scheduler จะทำการจัดสรร Pods ไปยัง Nodes ที่เหมาะสมตามทรัพยากรที่มีอยู่

  4. การฟื้นฟูระบบอัตโนมัติ หาก Pods ล้มเหลว Controller Manager จะสร้าง Pods ใหม่เพื่อให้คลัสเตอร์ทำงานได้อย่างต่อเนื่อง


Kubernetes Architecture ถูกออกแบบมาให้ยืดหยุ่นและรองรับการทำงานที่ซับซ้อนในระบบคลาวด์ โดยการเข้าใจโครงสร้างนี้จะช่วยให้คุณสามารถจัดการและปรับแต่งคลัสเตอร์ได้อย่างมีประสิทธิภาพ