การหลุดจากสถานะ pending-upgrade และสถานะค้าง
การกู้คืนรีลีสที่ติดขัดระหว่างการดำเนินการ
การหลุดจากสถานะ pending-upgrade และสถานะค้าง เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
เมื่อรีลีสติดค้าง
หากการอัปเกรดถูกขัดจังหวะ รีลีสอาจติดอยู่ในสถานะ pending-upgrade และปฏิเสธการดำเนินการใหม่ทุกอย่าง อย่าเพิ่งตกใจ 🛑
ค้นหาสถานะ
เรียกใช้ helm list แล้วรีลีสที่ติดค้างจะแสดงสถานะอย่าง pending-upgrade หรือ pending-install แทนสถานะ deployed ที่ทำงานปกติ
helm list --all --namespace webเหตุใดจึงเกิดขึ้น
สถานะ pending หมายความว่า Helm เริ่มเขียนรุ่นแก้ไขแล้วแต่ดำเนินการไม่เสร็จ มักเกิดจากกระบวนการถูกยุติหรือหมดเวลาระหว่างการอัปเกรด
วิธีแก้ที่สะอาดที่สุด
ทางออกที่ปลอดภัยที่สุดคือย้อนกลับไปยังรุ่นแก้ไขล่าสุดที่ใช้งานได้ helm rollback จะคืนรีลีสไปยังสถานะที่ทราบว่าใช้งานได้และมีสุขภาพดี
helm rollback my-app 0เลือกเป้าหมาย
ตรวจสอบ helm history ก่อนเพื่อดูว่ารุ่นแก้ไขใดถูกนำไปใช้งานอย่างเรียบร้อยล่าสุด จากนั้นจึงย้อนกลับไปยังหมายเลขนั้นโดยตรง
helm history my-appย้อนกลับไปเป็นศูนย์
การส่งรุ่นแก้ไข 0 เป็นทางลัดที่สะดวก โดยบอกให้ Helm ย้อนกลับไปยังรีลีสก่อนหน้าโดยไม่ต้องระบุหมายเลขเอง
helm rollback my-appรีลีสถูกจัดเก็บเป็นข้อมูลลับ
Helm 3 เก็บรุ่นแก้ไขแต่ละรุ่นไว้ใน Secret ของ Kubernetes ภายในเนมสเปซของรีลีส บันทึกนี้เป็นสิ่งที่ติดตามสถานะ pending
ตรวจสอบบันทึก
แสดงรายการข้อมูลลับเหล่านั้นเพื่อดูประวัติการแก้ไขโดยตรง รายการล่าสุดมีสถานะรอดำเนินการที่กำลังขัดขวางคุณอยู่
kubectl get secret -l owner=helm,name=my-app -n webการล้างข้อมูลเป็นทางเลือกสุดท้าย
หากการย้อนกลับไม่ช่วย ให้ลบข้อมูลลับของการแก้ไขที่ล้มเหลวและอยู่ระหว่างดำเนินการ จากนั้นเฮล์มจะย้อนกลับไปใช้การแก้ไขก่อนหน้าเป็นรายการล่าสุด
kubectl delete secret sh.helm.release.v1.my-app.v5 -n webจากนั้นลองอัปเกรดอีกครั้ง
เมื่อบันทึกที่ค้างถูกล้างแล้ว ให้เรียกใช้ คำสั่งอัปเกรดของเฮล์ม อีกครั้ง เมื่อสถานะสะอาดแล้ว คราวนี้กระบวนการจะดำเนินไปตามปกติ
helm upgrade my-app ./my-appป้องกันไม่ให้เกิดขึ้นครั้งถัดไป
การเพิ่ม --atomic ในการอัปเกรดจะช่วยหลีกเลี่ยงสถานะค้างได้ทั้งหมด หากการทำงานล้มเหลว ระบบจะย้อนกลับเองแทนที่จะปล่อยให้คุณติดอยู่ในสถานะนั้น
helm upgrade my-app ./my-app --atomic --timeout 5mตรวจสอบอย่างรวดเร็ว
รีลีสอยู่ในสถานะรอการอัปเกรด คุณควรดำเนินการใดเป็นอันดับแรกเพื่อกู้คืนอย่างปลอดภัยที่สุด
ทบทวน
ตอนนี้คุณสามารถกู้คืนรีลีสที่ค้างได้แล้ว โดยตรวจสอบสถานะรอดำเนินการ ใช้ คำสั่งย้อนกลับของเฮล์ม ไปยังการแก้ไขที่ใช้งานได้ หรือลบข้อมูลลับของรีลีสที่ล้มเหลว ใช้ --atomic เพื่อป้องกันปัญหานี้ 🚀
คำถามที่พบบ่อย
บทเรียน “การหลุดจากสถานะ pending-upgrade และสถานะค้าง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การหลุดจากสถานะ pending-upgrade และสถานะค้าง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การหลุดจากสถานะ pending-upgrade และสถานะค้าง”
การกู้คืนรีลีสที่ติดขัดระหว่างการดำเนินการ คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การหลุดจากสถานะ pending-upgrade และสถานะค้าง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การติดตามการเรนเดอร์ด้วย --debug และ --dry-run
- การอ่าน Manifest ด้วย helm get all
- การหลุดจากสถานะ pending-upgrade และสถานะค้าง
- สร้างแผนภูมิแอปพลิเคชันสำหรับ Production ตั้งแต่ต้นจนจบ