Service สำหรับการเข้าถึงเครือข่าย
เปิดให้เข้าถึงแอปพลิเคชันทั้งภายในและภายนอกคลัสเตอร์โดยใช้ประเภท Service ต่าง ๆ ของ Kubernetes
Service สำหรับการเข้าถึงเครือข่าย เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
Kubernetes Service คืออะไร
ใน Kubernetes Pods คือหน่วยที่เล็กที่สุดที่สามารถนำไปใช้งานได้ โดยได้รับการออกแบบให้เกิดขึ้นชั่วคราว กล่าวคือสามารถสร้าง ลบ หรือแทนที่ได้ทุกเมื่อ และมักได้รับ IP ใหม่
ลักษณะที่เปลี่ยนแปลงอยู่เสมอนี้ทำให้แอปพลิเคชันอื่นค้นหาและสื่อสารกับ Pods ได้อย่างน่าเชื่อถือได้ยาก นี่คือจุดที่ Services เข้ามาช่วย

มอบการเข้าถึงเครือข่ายที่เสถียร
Kubernetes Service ทำหน้าที่เป็นปลายทางเครือข่ายที่เสถียรสำหรับกลุ่ม Pods ลองนึกภาพว่าเป็นที่อยู่ถาวรที่ไม่เปลี่ยนแปลง แม้ Pods ที่อยู่เบื้องหลังจะเปลี่ยนไป
- Services มอบที่อยู่ IP และชื่อ DNS ที่สอดคล้องกัน
- สามารถกระจายภาระการรับส่งข้อมูลไปยังหลาย Pods ได้
- ช่วยให้พร้อมใช้งานอย่างต่อเนื่องขณะที่ Pods ปรับขนาดหรือเริ่มทำงานใหม่
เชื่อมต่อ Pods กับ Services
Service ทราบได้อย่างไรว่า ควรส่งการรับส่งข้อมูลไปยัง Pods ใด ใช้ ป้ายกำกับ และ ตัวเลือก
เมื่อคุณสร้าง Pods คุณจะกำหนดป้ายกำกับให้ (คู่คีย์-ค่า เช่น app: my-app) จากนั้น Service จะระบุ ตัวเลือก ที่ตรงกับป้ายกำกับเหล่านี้เพื่อสร้างการเชื่อมโยงแบบไดนามิก
การเข้าถึงภายในด้วย ClusterIP
ClusterIP เป็นประเภท Service เริ่มต้นและเป็นประเภทที่ใช้กันมากที่สุด โดยจะกำหนดที่อยู่ IP ภายในที่เสถียรภายในคลัสเตอร์ Kubernetes ซึ่ง IP นี้จะเข้าถึงได้เฉพาะจาก Pods หรือ Nodes อื่น ๆ ภายในคลัสเตอร์ เท่านั้น
เหมาะอย่างยิ่งสำหรับบริการส่วนหลัง เช่น ฐานข้อมูลหรือ API ที่จำเป็นต้องสื่อสารกับบริการอื่นภายในแอปพลิเคชันของคุณเท่านั้น
การกำหนดบริการ ClusterIP
นี่คือตัวอย่างคำจำกัดความ YAML อย่างง่ายสำหรับ Service ประเภท ClusterIP โปรดสังเกต selector ที่ตรงกับป้ายกำกับ app: my-backend และการที่ port เชื่อมโยงกับ targetPort
apiVersion: v1
kind: Service
metadata:
name: my-backend-service
spec:
selector:
app: my-backend
ports:
- protocol: TCP
port: 80
targetPort: 8080 # Port your application listens on
type: ClusterIPการเข้าถึงภายนอกด้วย NodePort
Service ประเภท NodePort จะเปิดให้เข้าถึงแอปพลิเคชันของคุณผ่านพอร์ตคงที่บน ที่อยู่ IP ของแต่ละ Node ทำให้สามารถเข้าถึงบริการจากภายนอกคลัสเตอร์ได้โดยใช้ IP ของ Node ใดก็ได้ร่วมกับพอร์ตที่ระบุ
โดยทั่วไป ค่า nodePort จะอยู่ในช่วง 30000-32767 เหมาะสำหรับการเข้าถึงจากภายนอกแบบง่าย ๆ หรือสภาพแวดล้อมสำหรับการพัฒนา
การกำหนดบริการ NodePort
หากต้องการเปิดบริการให้เข้าถึงจากภายนอกผ่าน NodePort ให้กำหนด type: NodePort คุณสามารถระบุ nodePort เองได้ หรือให้ Kubernetes เลือกให้ก็ได้
apiVersion: v1
kind: Service
metadata:
name: my-frontend-service
spec:
selector:
app: my-frontend
ports:
- protocol: TCP
port: 80
targetPort: 80 # Port your application listens on
nodePort: 30080 # Optional: specific port on the Node
type: NodePortตัวกระจายภาระบนคลาวด์
Service ประเภท LoadBalancer ออกแบบมาสำหรับสภาพแวดล้อมคลาวด์ เมื่อคุณสร้าง Service ประเภทนี้ ผู้ให้บริการคลาวด์ของคุณ เช่น AWS, GCP หรือ Azure จะจัดเตรียมตัวกระจายภาระภายนอกให้โดยอัตโนมัติ
ตัวกระจายภาระนี้จะได้รับที่อยู่ IP สาธารณะและส่งการรับส่งข้อมูลจากภายนอกไปยัง Pods ของคุณโดยตรง โดยมักมีคุณสมบัติขั้นสูง เช่น การสิ้นสุด SSL
การกำหนดบริการ LoadBalancer
สำหรับแอปพลิเคชันที่เปิดให้สาธารณะเข้าถึงบนคลัสเตอร์ Kubernetes บนคลาวด์ LoadBalancer เป็นตัวเลือกหลักที่ควรใช้ โดยช่วยให้การจัดการการเข้าถึงจากภายนอกง่ายขึ้นอย่างมาก
apiVersion: v1
kind: Service
metadata:
name: my-web-app-lb
spec:
selector:
app: my-web-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancerเลือก Service ให้เหมาะสม
ทีมของคุณกำลังนำแอปพลิเคชันใหม่ไปใช้งานบน Kubernetes โปรดพิจารณาสถานการณ์ต่อไปนี้
- API ส่วนหลัง ที่จำเป็นต้องให้บริการเข้าถึงได้เฉพาะจากบริการอื่นภายในคลัสเตอร์
- เว็บเซิร์ฟเวอร์ส่วนหน้า ที่ต้องเปิดให้เข้าถึงจากอินเทอร์เน็ต และคุณกำลังนำไปใช้งานบนผู้ให้บริการคลาวด์ (AWS, GCP, Azure)
Service ประเภทใดเหมาะสมที่สุดสำหรับ เว็บเซิร์ฟเวอร์ส่วนหน้า
ทบทวน: Services สำหรับการเข้าถึงเครือข่าย
เราได้เรียนรู้ว่า Services ของ Kubernetes มอบการเข้าถึงเครือข่ายที่เสถียรให้กับ Pods ที่เปลี่ยนแปลงอยู่เสมอ ซึ่งจำเป็นอย่างยิ่งต่อการสื่อสารระหว่างแอปพลิเคชันอย่างน่าเชื่อถือ
- ClusterIP: สำหรับการสื่อสารภายในคลัสเตอร์เท่านั้น
- NodePort: เปิดให้เข้าถึงบริการผ่านพอร์ตคงที่บน IP ของแต่ละ Node และเข้าถึงจากภายนอกได้สำหรับกรณีใช้งานเฉพาะ
- LoadBalancer: ทำงานร่วมกับผู้ให้บริการคลาวด์เพื่อจัดเตรียมตัวกระจายภาระภายนอกสำหรับการเข้าถึงแบบสาธารณะ
การเลือกประเภท Service ที่เหมาะสมมีความสำคัญอย่างยิ่งต่อการควบคุมวิธีเปิดให้เข้าถึงแอปพลิเคชันของคุณ
คำถามที่พบบ่อย
บทเรียน “Service สำหรับการเข้าถึงเครือข่าย” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Service สำหรับการเข้าถึงเครือข่าย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Service สำหรับการเข้าถึงเครือข่าย”
เปิดให้เข้าถึงแอปพลิเคชันทั้งภายในและภายนอกคลัสเตอร์โดยใช้ประเภท Service ต่าง ๆ ของ Kubernetes คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “Service สำหรับการเข้าถึงเครือข่าย” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Deployment สำหรับแอปแบบไร้สถานะ
- Service สำหรับการเข้าถึงเครือข่าย
- ConfigMaps และ Secrets
- Ingress และการกำหนดเส้นทางภายนอก