0Pricing
Docker & DevOps Fundamentals · บทเรียน

Service สำหรับการเข้าถึงเครือข่าย

เปิดให้เข้าถึงแอปพลิเคชันทั้งภายในและภายนอกคลัสเตอร์โดยใช้ประเภท Service ต่าง ๆ ของ Kubernetes

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

Kubernetes Service คืออะไร

ใน Kubernetes Pods คือหน่วยที่เล็กที่สุดที่สามารถนำไปใช้งานได้ โดยได้รับการออกแบบให้เกิดขึ้นชั่วคราว กล่าวคือสามารถสร้าง ลบ หรือแทนที่ได้ทุกเมื่อ และมักได้รับ IP ใหม่

ลักษณะที่เปลี่ยนแปลงอยู่เสมอนี้ทำให้แอปพลิเคชันอื่นค้นหาและสื่อสารกับ Pods ได้อย่างน่าเชื่อถือได้ยาก นี่คือจุดที่ Services เข้ามาช่วย

Service สำหรับการเข้าถึงเครือข่าย — ภาพประกอบ 1

มอบการเข้าถึงเครือข่ายที่เสถียร

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) และปลดล็อคส่วนที่เหลือของคอร์ส Docker & DevOps Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Docker & DevOps Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Service สำหรับการเข้าถึงเครือข่าย”

เปิดให้เข้าถึงแอปพลิเคชันทั้งภายในและภายนอกคลัสเตอร์โดยใช้ประเภท Service ต่าง ๆ ของ Kubernetes คุณปฏิบัติ Docker & DevOps Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Docker & DevOps Fundamentals หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Docker & DevOps Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “Service สำหรับการเข้าถึงเครือข่าย” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Docker & DevOps Fundamentals นี้ได้ไหม

ได้ บทเรียน Docker & DevOps Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Deployment สำหรับแอปแบบไร้สถานะ
  2. Service สำหรับการเข้าถึงเครือข่าย
  3. ConfigMaps และ Secrets
  4. Ingress และการกำหนดเส้นทางภายนอก
← กลับไปที่ Docker & DevOps Fundamentals