การวินิจฉัยปัญหาทั่วไป
เรียนรู้การระบุและแก้ไขปัญหาทั่วไปที่เกี่ยวข้องกับ Pod, Deployment และ Service
การวินิจฉัยปัญหาทั่วไป เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงต้องแก้ไขปัญหา Kubernetes
การเรียกใช้แอปพลิเคชันบน Kubernetes มีประสิทธิภาพสูง แต่บางครั้งสิ่งต่าง ๆ ก็ไม่เป็นไปตามแผน พ็อดอาจเริ่มทำงานไม่ได้ บริการอาจเชื่อมต่อไม่ได้ หรือการติดตั้งอาจล้มเหลว
การเรียนรู้วิธีวิเคราะห์ปัญหาเหล่านี้อย่างรวดเร็วเป็นทักษะสำคัญสำหรับผู้ใช้ Kubernetes ทุกคน เพราะช่วยให้แอปพลิเคชันทำงานได้ดีและพร้อมให้บริการอยู่เสมอ
เครื่องมือหลักของคุณ: kubectl
เครื่องมือบรรทัดคำสั่งหลักสำหรับโต้ตอบกับคลัสเตอร์ Kubernetes คือ kubectl เครื่องมือนี้เป็นหน้าต่างให้คุณเห็นสถานะของคลัสเตอร์และเป็นกุญแจสำคัญในการวิเคราะห์ปัญหา
เราจะสำรวจวิธีใช้ kubectl เพื่อตรวจสอบส่วนต่าง ๆ ของคลัสเตอร์และระบุปัญหาให้ตรงจุด
ตรวจสอบสุขภาพของพ็อด
ขั้นตอนแรกของการแก้ไขปัญหามักเริ่มจากการตรวจสอบสถานะของพ็อด คำสั่ง kubectl get pod จะแสดงภาพรวมอย่างรวดเร็ว
ให้มองหาพ็อดที่อยู่ในสถานะ เช่น Pending, Error, CrashLoopBackOff หรือมีจำนวนการเริ่มทำงานใหม่ที่ไม่คาดคิด
kubectl get pod my-app-pod-xyzตรวจสอบรายละเอียดของพ็อด
เมื่อ kubectl get pod แสดงปัญหา ให้ตรวจสอบรายละเอียดเพิ่มเติมด้วย kubectl describe pod คำสั่งนี้จะแสดงข้อมูลจำนวนมากเกี่ยวกับพ็อดที่ระบุ:
- สถานะ: สถานะและเงื่อนไขปัจจุบัน
- เหตุการณ์: ลำดับเหตุการณ์ที่เกิดขึ้นกับพ็อด ซึ่งสำคัญต่อการทำความเข้าใจสาเหตุที่พ็อดล้มเหลว
- คอนเทนเนอร์: รายละเอียดของคอนเทนเนอร์แต่ละรายการในพ็อด
- โวลุม: ข้อมูลเกี่ยวกับพื้นที่จัดเก็บที่แนบอยู่
kubectl describe pod my-app-pod-xyzอ่านบันทึกของพ็อด
หากพ็อดกำลังทำงานอยู่แต่แอปพลิเคชันไม่ทำงาน ขั้นตอนถัดไปคือการตรวจสอบบันทึกของพ็อด บันทึกของแอปพลิเคชันมักมีข้อความข้อผิดพลาดหรือคำเตือนที่ช่วยอธิบายปัญหา
ใช้ kubectl logs เพื่อดึงบันทึกจากคอนเทนเนอร์ภายในพ็อด และยังสามารถดูบันทึกก่อนหน้าได้หากคอนเทนเนอร์เริ่มทำงานใหม่
kubectl logs my-app-pod-xyz -c my-containerวิเคราะห์ปัญหาการติดตั้ง
Deployment ใช้จัดการกลุ่มพ็อด หากแอปพลิเคชันไม่เพิ่มลดขนาดหรืออัปเดตอย่างถูกต้อง ให้ตรวจสอบสถานะของ Deployment
ใช้ kubectl get deployment เพื่อดูสถานะปัจจุบัน และใช้ kubectl describe deployment เพื่อดูเหตุการณ์และเงื่อนไขโดยละเอียด รวมถึงข้อมูล ReplicaSet
kubectl get deployment my-app-deployment
kubectl describe deployment my-app-deploymentตรวจสอบการเชื่อมต่อของบริการ
บริการช่วยให้เข้าถึงพ็อดได้ หากไคลเอ็นต์เข้าถึงแอปพลิเคชันไม่ได้ บริการอาจกำหนดค่าไม่ถูกต้องหรือไม่ได้ชี้ไปยังพ็อดที่มีสุขภาพดี
ตรวจสอบสถานะของบริการและปลายทางที่เชื่อมโยงกัน:
- ตัวเลือก: ตรงกับป้ายกำกับของพ็อดหรือไม่
- ปลายทาง: มี IP ของพ็อดที่มีสุขภาพดีแสดงอยู่หรือไม่
kubectl get service my-app-service
kubectl describe service my-app-serviceทำความเข้าใจเหตุการณ์ในคลัสเตอร์
Kubernetes สร้างเหตุการณ์สำหรับการดำเนินการเกือบทุกอย่างในคลัสเตอร์ เหตุการณ์เหล่านี้มีประโยชน์อย่างมากต่อการทำความเข้าใจลำดับเวลาของปัญหา โดยเฉพาะปัญหาการจัดกำหนดการหรือข้อจำกัดด้านทรัพยากร
ใช้ kubectl get events เพื่อดูบันทึกเหตุการณ์ตามลำดับเวลาที่เกิดขึ้นในเนมสเปซของคุณหรือทั่วทั้งคลัสเตอร์
kubectl get events --sort-by='.metadata.creationTimestamp'ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
ต่อไปนี้คือปัญหาที่พบบ่อยและสิ่งที่ควรตรวจสอบ:
- ImagePullBackOff: ชื่อหรือแท็กอิมเมจไม่ถูกต้อง หรือมีปัญหาในการยืนยันตัวตนกับรีจิสทรีส่วนตัว
- CrashLoopBackOff: แอปพลิเคชันมีข้อผิดพลาด (ตรวจสอบบันทึก) โพรบตรวจสอบการทำงานกำหนดค่าไม่ถูกต้อง หรือมีทรัพยากรไม่เพียงพอ
- พ็อดอยู่ในสถานะรอดำเนินการ: มีทรัพยากรไม่เพียงพอ (CPU/หน่วยความจำ) มี taint หรือ toleration ของโหนด หรือค่าโหนดตัวเลือกไม่ตรงกัน
- บริการเชื่อมต่อไม่ได้: ตัวเลือกบริการไม่ตรงกับป้ายกำกับของพ็อด หรือพอร์ตเป้าหมายไม่ถูกต้อง
- โพรบตรวจสอบความพร้อมล้มเหลว: แอปพลิเคชันยังไม่พร้อมให้บริการการรับส่งข้อมูล
โจทย์ท้าทายการแก้ไขปัญหา
พ็อดชื่อ web-server-789abc ติดอยู่ในสถานะ Pending คุณจะใช้คำสั่ง kubectl ใดเป็นคำสั่งแรกเพื่อทำความเข้าใจสาเหตุที่พ็อดไม่ได้รับการจัดกำหนดการ
การวิเคราะห์ Kubernetes: สรุป
ในบทเรียนนี้ คุณได้เรียนรู้คำสั่งและเทคนิคสำคัญสำหรับวิเคราะห์ปัญหา Kubernetes ที่พบบ่อย:
- ใช้
kubectl getเพื่อดูภาพรวมอย่างรวดเร็ว - เจาะลึกด้วย
kubectl describeเพื่อดูสถานะและเหตุการณ์โดยละเอียด - ตรวจสอบ
kubectl logsเพื่อดูข้อผิดพลาดเฉพาะของแอปพลิเคชัน - ติดตาม
kubectl get eventsเพื่อดูการดำเนินการทั่วทั้งคลัสเตอร์
เครื่องมือเหล่านี้ช่วยให้คุณระบุและแก้ไขปัญหาได้อย่างรวดเร็ว ทำให้แอปพลิเคชันทำงานได้อย่างราบรื่น
คำถามที่พบบ่อย
บทเรียน “การวินิจฉัยปัญหาทั่วไป” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การวินิจฉัยปัญหาทั่วไป” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การวินิจฉัยปัญหาทั่วไป”
เรียนรู้การระบุและแก้ไขปัญหาทั่วไปที่เกี่ยวข้องกับ Pod, Deployment และ Service คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การวินิจฉัยปัญหาทั่วไป” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การวินิจฉัยปัญหาทั่วไป
- การแก้ไขข้อบกพร่องของ Pod และ Service
- แนวทางปฏิบัติและเคล็ดลับที่ดีที่สุดสำหรับการใช้งานจริง
- โควตาทรัพยากรและช่วงจำกัดทรัพยากร