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/logYAML ของตัวรวบรวมบันทึก (ส่วนที่ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Pod: หน่วยที่เล็กที่สุด
- วงจรชีวิตและสถานะของ Pod
- Pod หลายคอนเทนเนอร์ (ไซด์คาร์)
- คอนเทนเนอร์เริ่มต้นและลำดับการเริ่มทำงาน