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
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 |
+-------+ +-------+ +---------+
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 |
+-------+ +-------+
Top comments (0)