ต่อภาพเครือข่ายทั้งหมด (+ Lab)
frontend → Service → backend + เปิดสู่ภายนอกด้วย Ingress
ถึงจุดนี้เราจะนำจิ๊กซอว์ทั้งหมดมาต่อรวมกัน เพื่อให้เห็นภาพระบบเต็มตั้งแต่ผู้ใช้เรียกเข้ามา จนถึงตัวแอปพลิเคชันที่รันอยู่
บทนี้คือประกอบร่างสิ่งที่เรียนมา: ผู้ใช้ → Ingress → Service (ClusterIP) → กลุ่ม Pod · และ frontend เรียก backend ผ่านชื่อ DNS ภายใน
Ingress ตัวเดียวแยก traffic ตาม path ไปหลาย Service
🧪 Lab: เปิดเว็บให้เข้าถึงได้จริง
kubectl apply -f deployment.yaml # Pod (app=web)
kubectl apply -f service.yaml # Service ClusterIP หน้ากลุ่ม Pod
kubectl apply -f ingress.yaml # กฎ routing
kubectl get svc,ingress # ดูว่าได้ IP/ADDRESS ไหม
kubectl exec -it <pod> -- curl http://web # ทดสอบเรียกด้วยชื่อ DNSสรุป Key Takeaways
- ภาพรวม: ผู้ใช้ → Ingress → Service → Pod · ภายในเรียกกันด้วยชื่อ DNS
- บน minikube เปิด addon ingress ก่อนใช้งาน
- debug service: เช็ค endpoints ว่าง? namespace? targetPort ตรงไหม
คำถามที่พบบ่อย
ต่อ service ไม่ติด ไล่เช็คยังไงเป็นลำดับ
ไล่จากใกล้ไปไกล: (1) pod รันและ Ready ไหม (2) Service selector ตรงกับ label ของ pod ไหม — เช็ค kubectl get endpoints ว่ามี IP ไหม (endpoints ว่าง = selector ผิด) (3) port/targetPort ตรงกับที่แอปฟังไหม (4) ลอง curl จาก pod อื่นด้วยชื่อ DNS — ลำดับนี้เจอสาเหตุเกือบทุกเคส
port, targetPort, nodePort สามตัวนี้ต่างกันยังไง
port = พอร์ตของตัว Service (คนอื่นเรียกเข้า) · targetPort = พอร์ตที่ "container ฟังจริง" · nodePort = พอร์ตบนเครื่อง node (เฉพาะ type NodePort) — ปัญหาคลาสสิก: แอปฟัง 8080 แต่ targetPort ใส่ 80 — traffic มาถึงแต่ไม่มีใครรับ

