0Pricing
DevOps Bootcamp · บทเรียน

Pod หลายคอนเทนเนอร์ (ไซด์คาร์)

สำรวจรูปแบบการเรียกใช้คอนเทนเนอร์หลายตัวที่อยู่ร่วมกันภายใน Pod เดียว เช่น คอนเทนเนอร์ไซด์คาร์

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

มากกว่าคอนเทนเนอร์เดียว

จนถึงตอนนี้ เรามองพ็อดว่าใช้สำหรับเรียกใช้คอนเทนเนอร์เพียงรายการเดียว แต่ถ้าแอปพลิเคชันของคุณต้องใช้กระบวนการช่วยเหลือล่ะ

Kubernetes อนุญาตให้พ็อดเรียกใช้คอนเทนเนอร์หลายรายการได้ คอนเทนเนอร์เหล่านี้จะอยู่ร่วมกันในโหนดเดียวกันเสมอและใช้ทรัพยากรร่วมกัน

เหตุใดจึงใช้พ็อดหลายคอนเทนเนอร์

การเรียกใช้คอนเทนเนอร์หลายรายการในพ็อดเดียวเหมาะอย่างยิ่งสำหรับแอปพลิเคชันที่เชื่อมโยงกันอย่างใกล้ชิดและต้องใช้สิ่งต่อไปนี้ร่วมกัน:

  • เนมสเปซเครือข่าย (ใช้ที่อยู่ IP เดียวกันและสื่อสารผ่าน localhost ได้)
  • โวลุมจัดเก็บข้อมูล
  • วงจรการทำงาน (เริ่ม หยุด และเริ่มทำงานใหม่ไปพร้อมกัน)

วิธีนี้ทำให้สามารถจัดการกระบวนการที่เกี่ยวข้องกันเป็นหน่วยเดียวได้

อธิบายรูปแบบไซด์คาร์

การออกแบบที่พบได้บ่อยคือรูปแบบไซด์คาร์ โดยมีคอนเทนเนอร์ “ไซด์คาร์” ทำงานควบคู่ไปกับคอนเทนเนอร์แอปพลิเคชันหลัก

ไซด์คาร์จะขยายหรือเพิ่มความสามารถให้แอปพลิเคชันหลักโดยไม่ต้องแก้ไขตัวแอปพลิเคชันหลัก ลองนึกภาพว่าเป็นผู้ช่วยที่คอยสนับสนุนอยู่ข้าง ๆ

กรณีการใช้งานไซด์คาร์

ไซด์คาร์มีความยืดหยุ่นอย่างมาก ตัวอย่างการใช้งานที่พบบ่อย ได้แก่:

  • การรวบรวมบันทึก: ไซด์คาร์รวบรวมบันทึกจากแอปพลิเคชันหลักแล้วส่งไปยังบริการบันทึกส่วนกลาง
  • พร็อกซี: ไซด์คาร์ทำหน้าที่เป็นพร็อกซีเครือข่าย เช่น เพื่อความปลอดภัย (mTLS) หรือการจัดการทราฟฟิก
  • การซิงโครไนซ์ไฟล์: ไซด์คาร์ปรับปรุงโวลุมที่ใช้ร่วมกันให้มีการตั้งค่าหรือข้อมูลล่าสุดอยู่เสมอ

พ็อดที่มีสองคอนเทนเนอร์ (YAML)

มาดูวิธีกำหนดคอนเทนเนอร์หลายรายการในไฟล์กำกับ YAML ของพ็อดกัน แต่ละคอนเทนเนอร์เป็นรายการหนึ่งในอาร์เรย์ containers

สังเกตคอนเทนเนอร์ nginx-proxy และ main-app ที่กำหนดไว้ภายใต้ spec.containers

apiVersion: v1
kind: Pod
metadata:
  name: multi-container-pod
spec:
  containers:
  - name: nginx-proxy
    image: nginx:latest
    ports:
    - containerPort: 80
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "echo 'Hello from main app!' && sleep 3600"]

พื้นที่จัดเก็บข้อมูลร่วมกัน: emptyDir

คอนเทนเนอร์ภายในพ็อดเดียวกันสามารถใช้ข้อมูลร่วมกันผ่านโวลุมของ Kubernetes วิธีง่าย ๆ ในการทำเช่นนี้คือใช้โวลุม emptyDir

โวลุม emptyDir จะถูกสร้างขึ้นเมื่อพ็อดถูกกำหนดให้ทำงานบนโหนด และจะคงอยู่ตราบเท่าที่พ็อดนั้นยังทำงานอยู่บนโหนดดังกล่าว โวลุมนี้เป็นพื้นที่จัดเก็บข้อมูลชั่วคราว

ตัวอย่าง: ไซด์คาร์รวบรวมบันทึก

สมมติว่าแอปพลิเคชันหลักสร้างบันทึกลงในไฟล์ จากนั้นไซด์คาร์สามารถอ่านไฟล์บันทึกนี้และส่งต่อไปยังบริการบันทึกได้

วิธีนี้แยกตรรกะการบันทึกออกจากแอปพลิเคชันหลัก ทำให้แอปพลิเคชันมีโครงสร้างสะอาดและมุ่งเน้นหน้าที่หลัก

YAML ของตัวรวบรวมบันทึก (ส่วนที่ 1)

ต่อไปนี้คือ YAML สำหรับตัวอย่างตัวรวบรวมบันทึกของเรา เรากำหนดโวลุม emptyDir ชื่อ log-volume และคอนเทนเนอร์ทั้งสองรายการจะเมานต์โวลุมนี้

คอนเทนเนอร์ main-app จะเขียนข้อความบันทึกลงใน /var/log/app.log ภายในโวลุมที่ใช้ร่วมกัน

apiVersion: v1
kind: Pod
metadata:
  name: log-collector-pod
spec:
  volumes:
  - name: log-volume
    emptyDir: {}
  containers:
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log

YAML ของตัวรวบรวมบันทึก (ส่วนที่ 2)

ตอนนี้คอนเทนเนอร์ log-sidecar จะเมานต์ โวลุมเดียวกัน log-volume จากนั้นใช้ tail -f เพื่ออ่านไฟล์บันทึกที่แอปพลิเคชันหลักเขียนอย่างต่อเนื่อง

ในสถานการณ์จริง ไซด์คาร์นี้จะประมวลผลและส่งบันทึกเหล่านี้ไปยังระบบบันทึก เช่น Elasticsearch หรือ Splunk

apiVersion: v1
kind: Pod
metadata:
  name: log-collector-pod # Same Pod as before
spec:
  volumes:
  - name: log-volume
    emptyDir: {}
  containers:
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log
  - name: log-sidecar
    image: busybox:latest
    command: ["sh", "-c", "tail -f /var/log/app.log"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log

ตรวจสอบอย่างรวดเร็ว: ประโยชน์ของไซด์คาร์

พ็อดหลายคอนเทนเนอร์ โดยเฉพาะเมื่อใช้รูปแบบไซด์คาร์ มีข้อดีหลายประการสำหรับการจัดการแอปพลิเคชันที่ซับซ้อน

ข้อใดต่อไปนี้คือประโยชน์สำคัญของการใช้คอนเทนเนอร์ไซด์คาร์

ทบทวน: พ็อดหลายคอนเทนเนอร์

ทำได้ดีมาก คุณได้เรียนรู้เกี่ยวกับพ็อดหลายคอนเทนเนอร์และรูปแบบไซด์คาร์อันทรงพลังแล้ว

  • พ็อดสามารถโฮสต์คอนเทนเนอร์หลายรายการที่ใช้เครือข่ายและพื้นที่จัดเก็บข้อมูลร่วมกัน
  • รูปแบบไซด์คาร์ช่วยขยายหรือเพิ่มความสามารถให้แอปพลิเคชันหลัก
  • การใช้งานที่พบบ่อย ได้แก่ การรวบรวมบันทึก พร็อกซี และการซิงโครไนซ์ข้อมูล
  • โวลุม emptyDir ให้พื้นที่จัดเก็บข้อมูลร่วมกันชั่วคราวภายในพ็อด

รูปแบบนี้มีความสำคัญอย่างยิ่งต่อการสร้างแอปพลิเคชันที่ทนทานและเป็นโมดูลใน Kubernetes

คำถามที่พบบ่อย

บทเรียน “Pod หลายคอนเทนเนอร์ (ไซด์คาร์)” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Pod หลายคอนเทนเนอร์ (ไซด์คาร์)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Pod หลายคอนเทนเนอร์ (ไซด์คาร์)”

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

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

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

บทเรียน “Pod หลายคอนเทนเนอร์ (ไซด์คาร์)” ใช้เวลานานแค่ไหน

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

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

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

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

  1. Pod: หน่วยที่เล็กที่สุด
  2. วงจรชีวิตและสถานะของ Pod
  3. Pod หลายคอนเทนเนอร์ (ไซด์คาร์)
  4. คอนเทนเนอร์เริ่มต้นและลำดับการเริ่มทำงาน
← กลับไปที่ DevOps Bootcamp