คอนเทนเนอร์· ~15 นาที
ประเภทของ Service (ClusterIP / NodePort / LoadBalancer)
เลือกวิธีเปิดให้เข้าถึงจากในคลัสเตอร์หรือจากภายนอก
เทียบระดับการเปิดประตู: ClusterIP = ประตูภายในออฟฟิศ (คนในเท่านั้น), NodePort = เปิดหน้าต่างเลขห้องเฉพาะให้คนนอกปีนเข้า, LoadBalancer = จ้างประชาสัมพันธ์หน้าตึกคอยพาลูกค้าเข้ามา
ยิ่งลงล่างยิ่งเปิดกว้างสู่ภายนอก (สร้างต่อยอดกัน)
ClusterIPภายในคลัสเตอร์เท่านั้น
NodePortเปิดพอร์ตเดียวกันบนทุก node
LoadBalancerLB จริงจาก cloud หน้าสุด
LoadBalancer → ใช้ NodePort → ใช้ ClusterIP เบื้องหลัง
- ClusterIP (ค่าเริ่มต้น) — เข้าถึงได้เฉพาะภายในคลัสเตอร์ เหมาะให้ service คุยกันเอง (เช่น frontend → backend)
- NodePort — เปิดพอร์ตเดียวกันบนทุก node (ช่วง 30000–32767) ให้เข้าจากภายนอกผ่าน
<NodeIP>:<port>เหมาะทดสอบ/on-prem - LoadBalancer — ขอload balancer จริงจาก cloud (เช่น AWS ELB) มาไว้หน้าสุด เหมาะเปิดสู่อินเทอร์เน็ตใน production บน cloud
- ExternalName — แมป service เป็นชื่อ DNS ภายนอก (ไม่มี proxy) ใช้ชี้ไปบริการนอกคลัสเตอร์
apiVersion: v1
kind: Service
metadata:
name: web
spec:
type: ClusterIP # เปลี่ยนเป็น NodePort/LoadBalancer ได้
selector:
app: web # ส่ง traffic ให้ Pod ที่ label app=web
ports:
- port: 80 # พอร์ตที่ Service เปิด
targetPort: 8080 # พอร์ตของ container ปลายทางสรุป Key Takeaways
- ClusterIP = ภายในเท่านั้น (ดีฟอลต์) · NodePort = เปิดพอร์ตทุก node · LoadBalancer = LB จริงจาก cloud
- ทั้งหมดสร้างต่อยอดกัน: LoadBalancer → NodePort → ClusterIP
- production บน cloud เปิดสู่โลกภายนอกด้วย LoadBalancer (มักผ่าน Ingress)
อ่านจบแล้วอย่าลืมทำเครื่องหมาย

