Kubernetes on NIPA Cloud Space with Rancher

Kubernetes (K8s) ซึ่งเป็นแพลตฟอร์ม Container Orchestration ที่ได้รับความนิยมสูงสุดในปัจจุบัน ได้กลายเป็นเครื่องมือสำคัญสำหรับสถาปัตยกรรมแบบ Microservices และ Cloud-Native NIPA Cloud Space ได้นำเทคโนโลยีนี้มาให้บริการบนโครงสร้างพื้นฐานคลาวด์ที่ทันสมัยและมีประสิทธิภาพสูง เพื่อตอบโจทย์ความต้องการของธุรกิจในยุคดิจิทัล

สรุปสถาปัตยกรรม Kubernetes บน NIPA Cloud Space

รูปนี้แสดงสถาปัตยกรรมของ Managed Kubernetes (KaaS) ที่ทำงานบน NIPA Cloud โดยมี Rancher เป็นเครื่องมือหลักในการบริหารจัดการ (Orchestrator) สามารถสรุปการทำงานเป็นส่วนๆ ได้ดังนี้:

ส่วนการจัดการ (Management Layer)

  • Admin/System Operation: คือผู้ดูแลระบบ ใช้ Rancher ในการสั่งการ, ติดตั้ง, และดูแล Cluster ทั้งหมด

  • Rancher: ทำหน้าที่เป็นศูนย์กลางการจัดการ Kubernetes Cluster (Managed K8s) ทำให้ดูแล Cluster ได้ง่ายผ่าน UI

  • RKE2: คือ Kubernetes Distribution ที่ Rancher ใช้ในการติดตั้ง ซึ่งมีความปลอดภัยและเสถียรภาพสูง

  • Node Pools: คือการแบ่งกลุ่มของเซิร์ฟเวอร์ (VM) ตามหน้าที่อย่างชัดเจน:

    • Master Pool: สำหรับ Control Plane ของ Kubernetes (สมองของระบบ)

    • Worker Pool: สำหรับรันแอปพลิเคชันทั่วไป (Workloads)

    • Cronjob Pool: สำหรับรันงานที่ทำงานตามเวลา (Scheduled Tasks) เพื่อไม่ให้กระทบแอปหลัก

    • Special Node Pool: สามารถสร้าง Pool เฉพาะทางได้ เช่น GPU สำหรับงาน AI/ML หรือ Highmem สำหรับงานที่ต้องการ RAM สูง

ส่วนการเชื่อมต่อกับ Cloud (Cloud Integration)

สถาปัตยกรรมนี้เชื่อมต่อกับบริการของ NIPA Cloud โดยตรงผ่าน:

  • Cluster Autoscaler: สั่ง เพิ่ม/ลดจำนวน Node (VM) อัตโนมัติ ผ่าน Cloud API ตามปริมาณการใช้งานจริง ช่วยควบคุมค่าใช้จ่ายและรองรับโหลดที่พุ่งสูงขึ้น

  • CSI (Container Storage Interface): ให้ Pod (Container) สามารถเชื่อมต่อกับ Cloud Block Storage (Premium-SSD, Standard-SSD, HDD) เพื่อเก็บข้อมูลแบบถาวร (Persistent Storage)

    • รองรับการใช้งานกับ Block Storage ของ NIPA Cloud Space ทั้ง 3 Type ได้แก่ Standard-SSD, Premium-SSD, Standard-HDD ในรูปแบบของ ReadWriteOne

    • หากต้องการใช้งานรูปแบบ ReadWriteMany สามารถติดตั้ง NFS Server แล้วนำมาเชื่อมต่อเป็น Storage Class ได้

  • CCI (Cloud Controller Interface): เมื่อมีการสร้าง Service Type LoadBalancer ใน Kubernetes ระบบจะไปสร้าง Cloud Load Balancer ของ NIPA Cloud ให้โดยอัตโนมัติ

ส่วนการทำงานภายใน Cluster (Internal Components)

  • Ingress Controller (APISIX/Nginx): เป็นประตูหลักในการรับ Traffic จากภายนอกเข้ามายัง Service ภายใน Cluster โดยมีการแบ่ง Ingress 2 ส่วนชัดเจน:

    • ncs-ingress: สำหรับ Traffic ของผู้ดูแลระบบ เพื่อเข้าถึงเครื่องมือ Monitoring

    • app-ingress: สำหรับ Traffic ของผู้ใช้งานทั่วไป เพื่อเข้าถึงแอปพลิเคชัน

  • Monitoring & Logging (ncs-monitor):

    • Prometheus: เก็บ Metrics ต่างๆ ของระบบ

    • Grafana: แสดงผล Dashboard สวยงามจากข้อมูลของ Prometheus

    • Filebeat: รวบรวม Log จากทุกส่วนและส่งออกไปยัง Logging Service ภายนอก

  • Networking (kube-system):

    • CNI (Cilium/Calico): จัดการเรื่อง Network ระหว่าง Pod และใช้บังคับ Network Policies (เหมือน Firewall ระหว่าง Pod) เพื่อเพิ่มความปลอดภัย

    • CoreDNS/NodeLocalDNS: ทำหน้าที่เป็น DNS ภายใน Cluster ช่วยให้ Service ต่างๆ คุยกันเองได้ผ่านชื่อ และมี Cache ที่แต่ละ Node เพื่อลดภาระ DNS กลาง

ส่วนของแอปพลิเคชัน (Application Workloads)

  • namespace:app-prod เป็นพื้นที่สำหรับรันแอปพลิเคชันของผู้ใช้งานจริง เช่น NodeJS, PHP, .Net API Server ซึ่งจะถูกเรียกใช้งานผ่าน app-ingress

นี่คือสถาปัตยกรรม KaaS ที่สมบูรณ์และทันสมัย มีการแบ่งส่วนการทำงานชัดเจน (Separation of Concerns) ทำให้ดูแลรักษาง่าย มีระบบ Automation สูง (Autoscaling) เชื่อมต่อกับบริการ Cloud ได้อย่างสมบูรณ์ (CSI/CCI) และมีเครื่องมือ Monitoring ครบครัน พร้อมใช้งานได้ทันที จุดเด่นคือการใช้ Rancher ในการบริหารจัดการ และการออกแบบ Node Pools ที่ยืดหยุ่น ทำให้สามารถรองรับ Workload ได้หลากหลายรูปแบบอย่างมีประสิทธิภาพ

Last updated

Was this helpful?