Bagaimana cara men-debug "ImagePullBackOff"?

122

Tiba-tiba, saya tidak dapat menerapkan beberapa gambar yang sebelumnya dapat diterapkan. Saya mendapat status pod berikut:

[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 

Aplikasi tidak mau mulai. Pod tidak mencoba menjalankan container. Dari halaman Acara, saya sudah dapatkan Back-off pulling image "172.30.84.25:5000/default/arix@sha256:d326. Saya telah memverifikasi bahwa saya dapat menarik gambar dengan tag dengan docker pull.

Saya juga telah memeriksa log wadah terakhir. Itu ditutup karena beberapa alasan. Saya pikir pod tersebut setidaknya harus mencoba untuk memulai ulang.

Saya sudah kehabisan ide untuk men-debug masalah. Apa yang bisa saya periksa lebih lanjut?

Xiao Peng - ZenUML.com
sumber
Apakah ini penyiapan multi mesin? Jika demikian pastikan Anda dapat menarik dari semua node. Jika tidak, aktifkan logging ke --loglevel = 5 pada node dan mulai ulang - Anda akan melihat informasi tercetak yang menjelaskan upaya untuk menarik gambar dan kesalahan apa pun yang disertakan.
Clayton
Apa yang keluar setelah memulai ulang dengan loglevel = 5?
lvthillo
2
Apakah Anda menyelesaikan masalahnya? dapatkah seseorang menjelaskan masalah 'ImagePullBackOff' ini? (gambar yang ada di 'gambar buruh pelabuhan' saya)
ItayB
Saya mendapatkan ini dengan menggunakan wilayah yang salah untuk repo saya. Saya lupa menambahkan eu. ke --image = eu.gcr.io / $ PROJECT_ID / ...
Clemens Tolboom
Dalam kasus saya, itu adalah nama tag yang salah untuk gambar yang dikirimkan. Saya mengubah nama TAG yang memecahkan masalah.
Tara Prasad Gurung

Jawaban:

120

Anda dapat menggunakan sintaks ' deskripsikan pod '

Untuk penggunaan OpenShift:

oc describe pod <pod-id>  

Untuk vanilla Kubernetes:

kubectl describe pod <pod-id>  

Periksa peristiwa output. Dalam kasus saya ini menunjukkan Back-off pulling image coredns / coredns: latest

Dalam hal ini gambar coredns / coredns: latest tidak dapat ditarik dari Internet.

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\""

Langkah-langkah debug tambahan

  1. coba tarik gambar buruh pelabuhan dan tag secara manual di komputer Anda
  2. Identifikasi node dengan melakukan 'kubectl / oc get pods -o wide'
  3. ssh menjadi node (jika Anda bisa) yang tidak dapat menarik image buruh pelabuhan
  4. periksa apakah node dapat menyelesaikan DNS dari registri buruh pelabuhan dengan melakukan ping.
  5. coba tarik image buruh pelabuhan secara manual pada node
  6. Jika Anda menggunakan registri pribadi, periksa apakah rahasia Anda ada dan rahasianya benar. Rahasia Anda juga harus ada di namespace yang sama. Terima kasih swenzel
  7. Beberapa pendaftar memiliki firewall yang membatasi akses alamat ip. Firewall mungkin memblokir tarikan
  8. Beberapa CI membuat penerapan dengan rahasia buruh pelabuhan sementara. Jadi rahasianya kedaluwarsa setelah beberapa hari (Anda meminta kegagalan produksi ...)
rjdkolb
sumber
3
Juga, jika Anda menggunakan repositori gambar pribadi, pastikan rahasia penarikan gambar Anda ada, tidak ada kesalahan ketik dan mereka berada di namespace yang benar.
swenzel
Dalam kasus repositori gambar pribadi, pastikan juga bahwa Anda mereferensikan gambar pull rahasia di pod Anda menggunakan entri "imagePullSecrets".
Donato Szilagyi
1
Ada juga entri blog panjang yang menjelaskan cara men-debug secara mendalam di sini: managedkube.com/kubernetes/k8sbot/troubleshooting/…
gar
1

Sudahkah Anda mencoba mengedit untuk melihat apa yang salah (saya memiliki lokasi gambar yang salah)

kubectl edit pods arix-3-yjq9w

atau bahkan hapus pod Anda?

kubectl delete arix-3-yjq9w
Clemens Tolboom
sumber
0

Saya lupa mendorong gambar yang diberi tag 1.0.8 ke ECR (hub gambar AWS) ... Jika Anda menggunakan Helm dan memutakhirkan dengan:

helm upgrade minta-user ./src/services/user/helm-chart

pastikan tag gambar di dalam values.yaml didorong (ke ECR atau Docker Hub, dll) misalnya: (ini adalah bagan helm saya / values.yaml)

replicaCount: 1

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

Anda perlu memastikan bahwa gambar: 1.0.8 didorong!

dang
sumber
0

Saya menghadapi masalah yang sama, tetapi bukannya satu, semua pod saya belum siap dan menampilkan status Siap 0/1 Sesuatu seperti masukkan deskripsi gambar di sini

Saya mencoba banyak hal tetapi akhirnya saya menemukan bahwa konteksnya tidak diatur dengan benar. Silakan gunakan perintah berikut dan pastikan Anda berada dalam konteks yang benar

kubectl config get-contexts

Keras
sumber
0

Di GKE, jika pod sudah mati, sebaiknya periksa eventnya. Ini akan menunjukkan secara lebih detail tentang apa kesalahan itu.

Dalam kasus saya, saya memiliki:

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

Ternyata gambar itu entah bagaimana rusak. Setelah mem-repushingnya dan menerapkannya dengan hash baru, itu berfungsi lagi.

Vincent Gerris
sumber
-10

Jalankan login buruh pelabuhan

Dorong gambar ke hub buruh pelabuhan

Buat ulang pod

Ini memecahkan masalah saya. Semoga membantu.

Shyla
sumber