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

ห้าช่วงชีวิตของพ็อด
Kubernetes แบ่งพ็อดออกเป็นห้าระยะหลัก ระยะเหล่านี้ให้ภาพรวมระดับสูงเกี่ยวกับสถานะปัจจุบันของพ็อด
- Pending: Kubernetes รับพ็อดแล้ว แต่คอนเทนเนอร์ยังไม่เริ่มทำงาน
- Running: มีคอนเทนเนอร์อย่างน้อยหนึ่งรายการในพ็อดกำลังทำงานหรือกำลังเริ่มทำงาน
- Succeeded: คอนเทนเนอร์ทั้งหมดในพ็อดทำงานเสร็จสมบูรณ์ และจะไม่เริ่มทำงานใหม่
- Failed: คอนเทนเนอร์ทั้งหมดหยุดทำงาน และมีอย่างน้อยหนึ่งรายการทำงานล้มเหลว (เช่น จบการทำงานด้วยรหัสที่ไม่ใช่ศูนย์)
- Unknown: ไม่สามารถระบุสถานะของพ็อดได้ ซึ่งมักเกิดจากปัญหาการสื่อสาร
ระยะที่ 1: พ็อดอยู่ระหว่างรอดำเนินการ
พ็อดอยู่ในระยะ Pending เมื่อเซิร์ฟเวอร์ API ของ Kubernetes รับพ็อดแล้ว แต่ยังไม่ได้สร้างหรือตั้งค่าคอนเทนเนอร์อย่างน้อยหนึ่งรายการ
สาเหตุที่พบบ่อย ได้แก่
- อิมเมจคอนเทนเนอร์ยังดาวน์โหลดไม่เสร็จ
- คลัสเตอร์มีทรัพยากรไม่เพียงพอ (CPU/หน่วยความจำ) สำหรับจัดตารางพ็อด
- วอลุ่มยังอยู่ระหว่างการจัดเตรียมหรือเมานต์
สังเกตพ็อดที่อยู่ระหว่างรอดำเนินการ
มาดูตัวอย่างกัน หากคุณพยายามดีพลอยพ็อดด้วยอิมเมจที่ไม่มีอยู่จริง พ็อดอาจค้างอยู่ในสถานะ 'Pending' หรือแสดงข้อผิดพลาดในการดึงอิมเมจ
ต่อไปนี้คือตัวอย่างคำจำกัดความของพ็อด
apiVersion: v1
kind: Pod
metadata:
name: pending-pod-demo
spec:
containers:
- name: my-container
image: non-existent-image:latest
ports:
- containerPort: 80หากต้องการตรวจสอบสถานะ ให้ใช้ kubectl get pod คุณอาจเห็นผลลัพธ์ลักษณะนี้
$ kubectl get pod pending-pod-demo
NAME READY STATUS RESTARTS AGE
pending-pod-demo 0/1 ErrImagePull 0 5sErrImagePull ระบุว่าไม่สามารถดึงอิมเมจได้ จึงทำให้พ็อดไม่เข้าสู่สถานะ Running
ระยะที่ 2: พ็อดกำลังทำงาน
ระยะ กำลังทำงาน หมายความว่าพ็อดถูกผูกเข้ากับโหนดแล้ว และสร้างคอนเทนเนอร์ทั้งหมดสำเร็จแล้ว โดยมีคอนเทนเนอร์อย่างน้อยหนึ่งรายการกำลังทำงาน หรืออยู่ระหว่างการเริ่มต้นหรือเริ่มทำงานใหม่
โปรดทราบว่าพ็อดที่อยู่ในระยะกำลังทำงานไม่ได้หมายความว่าแอปพลิเคชันภายในพร้อมใช้งานหรือทำงานได้อย่างสมบูรณ์โดยอัตโนมัติ แต่หมายความเพียงว่าคอนเทนเนอร์กำลังทำงานอยู่
ทำให้พ็อดทำงาน
ต่อไปนี้เป็นคำจำกัดความมาตรฐานของพ็อดสำหรับเว็บเซิร์ฟเวอร์ Nginx หลังจากนำคำจำกัดความนี้ไปใช้ พ็อดของคุณควรเข้าสู่สถานะ 'กำลังทำงาน' ได้อย่างรวดเร็ว
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80หลังจากนำไปใช้งานแล้ว หากใช้ kubectl get pod จะแสดงผลดังนี้:
$ kubectl get pod nginx-pod
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 10sค่า 1/1 ใน READY ยืนยันว่าคอนเทนเนอร์พร้อมใช้งาน 1 รายการ จากทั้งหมด 1 รายการที่กำหนดไว้
ระยะที่ 3 และ 4: สำเร็จและล้มเหลว
ระยะเหล่านี้แสดงสถานะสิ้นสุดการทำงานของพ็อด:
- สำเร็จ: พ็อดจะเข้าสู่ระยะนี้เมื่อคอนเทนเนอร์ทั้งหมดภายในพ็อดสิ้นสุดการทำงานสำเร็จและจะไม่ถูกเริ่มทำงานใหม่ โดยทั่วไปพบในพ็อดที่ทำงานแบบครั้งเดียวหรืองานแบบชุด
- ล้มเหลว: พ็อดอยู่ในระยะ ล้มเหลว เมื่อคอนเทนเนอร์ทั้งหมดในพ็อดสิ้นสุดการทำงาน และมีคอนเทนเนอร์อย่างน้อยหนึ่งรายการสิ้นสุดลงด้วยความล้มเหลว เช่น จบการทำงานด้วยรหัสสถานะที่ไม่ใช่ศูนย์
การทำความเข้าใจระยะเหล่านี้ช่วยให้คุณวิเคราะห์การเสร็จสิ้นของงานหรือข้อผิดพลาดของแอปพลิเคชันได้
ระยะไม่ทราบสถานะอันน่าพิศวง
ระยะ ไม่ทราบสถานะ หมายความว่าไม่สามารถระบุสถานะของพ็อดได้ ระยะนี้พบได้ไม่บ่อย แต่มีความสำคัญอย่างยิ่ง
โดยปกติจะเกิดขึ้นเมื่อ Kubelet ซึ่งเป็นเอเจนต์บนโหนดที่พ็อดกำลังทำงานอยู่ หยุดสื่อสารกับเซิร์ฟเวอร์ API ของ Kubernetes สาเหตุอาจมาจากปัญหาเครือข่าย Kubelet หยุดทำงาน หรือปัญหาที่ตัวโหนดเอง
สถานะของคอนเทนเนอร์ภายในพ็อด
แม้พ็อดจะมีระยะโดยรวม แต่คอนเทนเนอร์แต่ละรายการภายในพ็อดก็มีสถานะย่อยของตนเองเช่นกัน สถานะเหล่านี้ส่งผลโดยตรงต่อระยะโดยรวมของพ็อด:
- กำลังรอ: ขณะนี้คอนเทนเนอร์กำลังรอเริ่มทำงาน สาเหตุอาจรวมถึงการดึงอิมเมจ การจัดสรรทรัพยากร หรือการรอให้คอนเทนเนอร์เริ่มต้นทำงานเสร็จ
- กำลังทำงาน: คอนเทนเนอร์กำลังทำงานอยู่โดยไม่มีปัญหา
- สิ้นสุดการทำงาน: คอนเทนเนอร์ทำงานเสร็จแล้ว ซึ่งอาจสำเร็จหรือล้มเหลวก็ได้
ตรวจสอบสถานะพ็อด
สมมติว่าคุณเพิ่งนำพ็อดใหม่ไปใช้งาน คุณเรียกใช้ kubectl get pod my-app และเห็นผลลัพธ์ดังต่อไปนี้:
NAME READY STATUS RESTARTS AGE
my-app 0/1 Pending 0 12sสาเหตุใดมีความเป็นไปได้มากที่สุดที่ทำให้พ็อด my-app อยู่ในสถานะ Pending โดยมีคอนเทนเนอร์ที่พร้อมใช้งานเป็น 0/1?
ทบทวนวงจรการทำงานและขั้นตอนถัดไป
คุณได้เรียนรู้แล้วว่าพ็อดของ Kubernetes จะดำเนินผ่านระยะต่าง ๆ ได้แก่ Pending, Running, Succeeded, Failed และ Unknown ระยะเหล่านี้ให้ภาพรวมระดับสูงเกี่ยวกับสถานะการทำงานของพ็อด
นอกจากนี้ เรายังกล่าวถึงสถานะของคอนเทนเนอร์แต่ละรายการ ได้แก่ Waiting, Running และ Terminated ซึ่งมีส่วนกำหนดระยะโดยรวมของพ็อด การตรวจสอบสถานะเหล่านี้ด้วย kubectl get pod และ kubectl describe pod ซึ่งคุณจะได้ศึกษาเพิ่มเติมในภายหลัง มีความสำคัญอย่างยิ่งต่อการทำความเข้าใจสุขภาพของแอปพลิเคชัน
ถัดไป เราจะเจาะลึกรูปแบบการใช้งานพ็อดขั้นสูง โดยสำรวจวิธีเรียกใช้คอนเทนเนอร์หลายรายการที่อยู่ร่วมกันภายในพ็อดเดียวด้วยรูปแบบไซด์คาร์
คำถามที่พบบ่อย
บทเรียน “วงจรชีวิตและสถานะของ Pod” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “วงจรชีวิตและสถานะของ Pod” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “วงจรชีวิตและสถานะของ Pod”
ทำความเข้าใจระยะต่าง ๆ ที่ Pod ดำเนินผ่าน และวิธีตรวจสอบสถานะของ Pod คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “วงจรชีวิตและสถานะของ Pod” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Pod: หน่วยที่เล็กที่สุด
- วงจรชีวิตและสถานะของ Pod
- Pod หลายคอนเทนเนอร์ (ไซด์คาร์)
- คอนเทนเนอร์เริ่มต้นและลำดับการเริ่มทำงาน