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

วงจรชีวิตและสถานะของ Pod

ทำความเข้าใจระยะต่าง ๆ ที่ Pod ดำเนินผ่าน และวิธีตรวจสอบสถานะของ Pod

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

พ็อด: การเดินทางผ่านช่วงชีวิต

พ็อดไม่ได้อยู่นิ่ง แต่จะผ่านช่วงต่าง ๆ เปรียบเสมือนการเดินทาง การทำความเข้าใจ “วงจรชีวิต” เป็นกุญแจสำคัญในการจัดการแอปพลิเคชันของคุณอย่างมีประสิทธิภาพใน Kubernetes

ความรู้นี้ช่วยให้คุณทราบว่าแอปทำงานปกติ กำลังเริ่มทำงาน หรือพบปัญหา

วงจรชีวิตและสถานะของ Pod — ภาพประกอบ 1

ห้าช่วงชีวิตของพ็อด

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          5s

ErrImagePull ระบุว่าไม่สามารถดึงอิมเมจได้ จึงทำให้พ็อดไม่เข้าสู่สถานะ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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