DEV Community

Tossapol Ritcharoenwattu
Tossapol Ritcharoenwattu

Posted on

Kubernetes Workshop1 : Step9 : Service

Service คือ Virtual IP ช่วยให้เข้าถึง Pod ได้โดยไม่ต้องรู้ Pod IP ตรง ๆ มีหลายประเภท:

  • ClusterIP → ภายใน Cluster
  • NodePort → เปิด Port ภายนอก
  • LoadBalancer → สร้าง Load Balancer ภายนอก

ClusterIP

  • ใช้งานภายใน Cluster เท่านั้น
  • ใช้ IP ภายใน (เช่น 10.96.5.42)
  • Pod อื่นใน Cluster เรียกผ่าน ClusterIP ได้
  • เหมาะสำหรับใช้งานภายใน เช่น Backend, Database
+-----------------------------+
|       Kubernetes Cluster    |
|                             |
|  +-----------------------+  |
|  |     Service (ClusterIP)| |
|  |  10.96.5.42:80         | |
|  +----------+------------+  |
|             |               |
|     +-------+--------+      |
|     |       |        |      |
| +---v--+ +--v---+ +--v---+  |
| | Pod1 | | Pod2 | | Pod3 |  |
| |:8080 | |:8080 | |:8080 |  |
| +------+ +------+ +------+  |
|                             |
+-----------------------------+
Client Pod --> ClusterIP --> Pod1/2/3
Enter fullscreen mode Exit fullscreen mode

NodePort
เปิด Port บน Node ทุกตัว
kube-proxy จะ redirect traffic ไปที่ Pod
เหมาะกับ Cluster on-prem หรือทดสอบระบบ

+---------------------------------------------+
|              Outside World                  |
|                                             |
|         http://NodeIP:30080                 |
|                    |                        |
+--------------------|------------------------+
                     |
          +----------v-----------+
          |   Node (Worker)      |
          |                      |
          |  kube-proxy          |
          +----------+-----------+
                     |
      +--------------+----------------+
      |                               |
+-----v------+                  +-----v------+
| Service    |                  | Service    |
| NodePort   |                  | NodePort   |
| 30080:80   |                  | 30080:80   |
+-----+------+                  +-----+------+
      |                               |
  +---v---+   +---v---+          +----v----+
  | Pod1  |   | Pod2  |          | Pod3    |
  | :8080 |   | :8080 |          | :8080   |
  +-------+   +-------+          +---------+
Enter fullscreen mode Exit fullscreen mode

LoadBalancer

  • สร้าง Load Balancer ภายนอก (Cloud Provider)
  • Cloud Provider สร้าง Load Balancer ให้ เช่น AWS ELB
  • User เรียกผ่าน External DNS หรือ IP
  • Load Balancer ส่ง traffic ไป NodePort ของ Node
  • Load Balancer → NodePort → Service → Pod
  • เหมาะสำหรับ Production
+-------------------------------------+
|         External LoadBalancer       |
|       (Cloud Provider ELB/ALB)      |
|         aabbcc.elb.amazonaws.com     |
+----------------+--------------------+
                 |
        +--------v--------+
        |   NodePort      |
        | (ทุก Node)      |
        | :30080          |
        +--------+--------+
                 |
         +-------+--------+
         |                |
     +---v---+        +---v---+
     | Pod1  |        | Pod2  |
     | :8080 |        | :8080 |
     +-------+        +-------+
Enter fullscreen mode Exit fullscreen mode

สรุปภาพรวม

Top comments (0)