จะแก้จุดบกพร่อง“ ImagePullBackOff” ได้อย่างไร


123

ทันใดนั้นฉันไม่สามารถปรับใช้ภาพบางภาพที่สามารถปรับใช้มาก่อนได้ ฉันได้รับสถานะพ็อดดังต่อไปนี้:

[root@webdev2 origin]# oc get pods 
NAME                      READY     STATUS             RESTARTS   AGE 
arix-3-yjq9w              0/1       ImagePullBackOff   0          10m 
docker-registry-2-vqstm   1/1       Running            0          2d 
router-1-kvjxq            1/1       Running            0          2d 

แอปพลิเคชันจะไม่เริ่มทำงาน พ็อดไม่ได้พยายามเรียกใช้คอนเทนเนอร์ Back-off pulling image "172.30.84.25:5000/default/arix@sha256:d326จากหน้าเหตุการณ์ที่ผมได้มี docker pullฉันได้ยืนยันว่าผมสามารถดึงภาพที่มีแท็กที่มี

ฉันได้ตรวจสอบบันทึกของคอนเทนเนอร์สุดท้ายแล้วด้วย มันถูกปิดด้วยเหตุผลบางประการ ฉันคิดว่าอย่างน้อยพ็อดควรลองรีสตาร์ท

ฉันไม่มีความคิดที่จะแก้ไขปัญหา ตรวจสอบอะไรเพิ่มเติมได้บ้าง


นี่คือการตั้งค่าหลายเครื่องหรือไม่ หากเป็นเช่นนั้นคุณสามารถดึงจากโหนดทั้งหมดได้ ไม่เช่นนั้นให้เปิดการบันทึกไปที่ --loglevel = 5 บนโหนดแล้วรีสตาร์ทคุณจะเห็นข้อมูลที่พิมพ์อธิบายถึงความพยายามในการดึงรูปภาพและข้อผิดพลาดใด ๆ รวมอยู่ด้วย
Clayton

มีอะไรออกมาหลังจากรีสตาร์ทด้วย loglevel = 5
lvthillo

2
แก้ปัญหาแล้วหรือยัง? ใครช่วยอธิบายปัญหา 'ImagePullBackOff' นี้ได้ไหม (ภาพมีอยู่ใน 'ภาพนักเทียบท่า' ของฉัน)
ItayB

ฉันได้รับสิ่งนี้โดยใช้ภูมิภาคที่ไม่ถูกต้องสำหรับ repo ของฉัน ฉันลืมใส่eu ถึง--image = eu.gcr.io / $ PROJECT_ID / ...
Clemens Tolboom

ในกรณีของฉันชื่อแท็กที่ไม่ถูกต้องสำหรับรูปภาพที่ส่งผ่าน ฉันเปลี่ยนชื่อ TAG ซึ่งช่วยแก้ปัญหาได้
Tara Prasad Gurung

คำตอบ:


121

คุณสามารถใช้ไวยากรณ์" อธิบายพ็อด "

สำหรับการใช้งาน OpenShift:

oc describe pod <pod-id>  

สำหรับวานิลลา Kubernetes:

kubectl describe pod <pod-id>  

ตรวจสอบเหตุการณ์ของผลลัพธ์ ในกรณีของฉันมันแสดงภาพBack-off ที่ดึง coredns / coredns: ล่าสุด

ในกรณีนี้ไม่สามารถดึงภาพ coredns / coredns: ล่าสุดจากอินเทอร์เน็ตได้

Events:
  FirstSeen LastSeen    Count   From                SubObjectPath           Type        Reason      Message
  --------- --------    -----   ----                -------------           --------    ------      -------
  5m        5m      1   {default-scheduler }                        Normal      Scheduled   Successfully assigned coredns-4224169331-9nhxj to 192.168.122.190
  5m        1m      4   {kubelet 192.168.122.190}   spec.containers{coredns}    Normal      Pulling     pulling image "coredns/coredns:latest"
  4m        26s     4   {kubelet 192.168.122.190}   spec.containers{coredns}    Warning     Failed      Failed to pull image "coredns/coredns:latest": Network timed out while trying to connect to https://index.docker.io/v1/repositories/coredns/coredns/images. You may want to check your internet connection or if you are behind a proxy.
  4m        26s     4   {kubelet 192.168.122.190}                   Warning     FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "coredns" with ErrImagePull: "Network timed out while trying to connect to https://index.docker.io/v1/repositories/coredns/coredns/images. You may want to check your Internet connection or if you are behind a proxy."

  4m    2s  7   {kubelet 192.168.122.190}   spec.containers{coredns}    Normal  BackOff     Back-off pulling image "coredns/coredns:latest"
  4m    2s  7   {kubelet 192.168.122.190}                   Warning FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "coredns" with ImagePullBackOff: "Back-off pulling image \"coredns/coredns:latest\""

ขั้นตอนการดีบักเพิ่มเติม

  1. พยายามดึงอิมเมจนักเทียบท่าและแท็กด้วยตนเองบนคอมพิวเตอร์ของคุณ
  2. ระบุโหนดโดยทำ 'kubectl / oc รับพ็อด -o wide'
  3. ssh เข้าไปในโหนด (ถ้าคุณทำได้) ที่ไม่สามารถดึงอิมเมจนักเทียบท่าได้
  4. ตรวจสอบว่าโหนดสามารถแก้ไข DNS ของนักเทียบท่ารีจิสตรีได้โดยใช้คำสั่ง ping
  5. พยายามดึงอิมเมจนักเทียบท่าด้วยตนเองบนโหนด
  6. หากคุณใช้รีจิสทรีส่วนตัวให้ตรวจสอบว่ามีความลับของคุณอยู่และความลับนั้นถูกต้อง ความลับของคุณควรอยู่ในเนมสเปซเดียวกันด้วย ขอบคุณswenzel
  7. การลงทะเบียนบางแห่งมีไฟร์วอลล์ที่ จำกัด การเข้าถึงที่อยู่ IP ไฟร์วอลล์อาจปิดกั้นการดึง
  8. CI บางตัวสร้างการปรับใช้ด้วยความลับของนักเทียบท่าชั่วคราว ดังนั้นความลับจะหมดอายุภายในสองสามวัน (คุณกำลังขอความล้มเหลวในการผลิต ... )

3
นอกจากนี้ในกรณีที่คุณใช้ที่เก็บรูปภาพส่วนตัวตรวจสอบให้แน่ใจว่ามีความลับในการดึงรูปภาพของคุณไม่มีการพิมพ์ผิดและอยู่ในเนมสเปซที่ถูกต้อง
swenzel

ในกรณีของที่เก็บภาพส่วนตัวตรวจสอบให้แน่ใจว่าคุณอ้างอิงภาพดึงความลับในพ็อดของคุณโดยใช้รายการ "imagePullSecrets"
Donato Szilagyi

1
นอกจากนี้ยังมีบล็อกโพสต์ยาว ๆ อธิบายวิธีการแก้จุดบกพร่องในเชิงลึกที่นี่: managedkube.com/kubernetes/k8sbot/troubleshooting/…
การ์

1

คุณได้ลองแก้ไขเพื่อดูว่ามีอะไรผิดปกติหรือไม่ (ฉันระบุตำแหน่งภาพไม่ถูกต้อง)

kubectl edit pods arix-3-yjq9w

หรือแม้แต่ลบพ็อดของคุณ

kubectl delete arix-3-yjq9w

0

ฉันลืมที่จะส่งรูปภาพที่ติดแท็ก 1.0.8 ไปยัง ECR (AWS images hub) ... หากคุณใช้ Helm และอัปเกรดโดย:

หางเสืออัพเกรด minta-user ./src/services/user/helm-chart

ตรวจสอบให้แน่ใจว่าแท็กรูปภาพภายในค่า yaml ถูกผลัก (ไปยัง ECR หรือ Docker Hub ฯลฯ ) ตัวอย่างเช่น: (นี่คือ helm-chart / values.yaml ของฉัน)

replicaCount: 1

image:
   repository:dkr.ecr.us-east-1.amazonaws.com/minta-user
   tag: 1.0.8

คุณต้องแน่ใจว่ารูปภาพ: 1.0.8 ถูกผลัก!


0

ฉันประสบปัญหาที่คล้ายกัน แต่แทนที่จะเป็นหนึ่งพ็อดทั้งหมดของฉันไม่พร้อมและแสดงสถานะพร้อม 0/1 สิ่งที่ต้องการ ใส่คำอธิบายภาพที่นี่

ฉันลองทำหลายอย่าง แต่สุดท้ายก็พบว่าตั้งค่าบริบทไม่ถูกต้อง โปรดใช้คำสั่งต่อไปนี้และตรวจสอบว่าคุณอยู่ในบริบทที่ถูกต้อง

kubectl config รับบริบท


0

ใน GKE หากพ็อดตายควรตรวจสอบเหตุการณ์ที่เกิดขึ้น จะแสดงรายละเอียดเพิ่มเติมว่าข้อผิดพลาดนั้นเกี่ยวกับอะไร

ในกรณีของฉันฉันมี:

Failed to pull image "gcr.io/project/imagename@sha256:c8e91af54fc17faa1c49e2a05def5cbabf8f0a67fc558eb6cbca138061a8400a":
 rpc error: code = Unknown desc = error pulling image configuration: unknown blob

ปรากฎว่าภาพเสียหายอย่างใด หลังจากส่งใหม่และปรับใช้กับแฮชใหม่มันก็ใช้งานได้อีกครั้ง


-10

เรียกใช้การเข้าสู่ระบบนักเทียบท่า

ดันภาพไปที่ Docker Hub

สร้างพ็อดใหม่

สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้ หวังว่าจะช่วยได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.