Bagaimana cara mencoba kembali image pull di kubernetes Pods?


92

Saya baru mengenal kubernetes. Saya memiliki masalah di pod. Saat saya menjalankan perintah

 kubectl get pods

Hasil:

NAME                   READY     STATUS             RESTARTS   AGE
mysql-apim-db-1viwg    1/1       Running            1          20h
mysql-govdb-qioee      1/1       Running            1          20h
mysql-userdb-l8q8c     1/1       Running            0          20h
wso2am-default-813fy   0/1       ImagePullBackOff   0          20h

Karena masalah node "wso2am-default-813fy", saya harus memulai ulang. Ada saran?

Jawaban:


70

Biasanya dalam kasus "ImagePullBackOff" itu dicoba ulang setelah beberapa detik / menit. Jika Anda ingin mencoba lagi secara manual, Anda dapat menghapus pod lama dan membuat ulang pod tersebut. Perintah satu baris untuk menghapus dan membuat ulang pod adalah:

kubectl replace --force -f <yml_file_describing_pod>

6
Jika Anda memiliki set replikasi / pengontrol yang mengelola pod ini, pod baru harus dibuat secara otomatis setelah mematikannya.
Hem

^^ tentu saja. Saya akan sangat khawatir jika pod pembunuhan akan hilang selamanya.
Damien Roche

3
Saya percaya kubectl replace --force -f ...akan setara dengan menghapus diikuti dengan buat
Oliver

1
Jika pod Anda dibuat melalui Deployment, maka hapus saja sebuah pod - pod baru akan dibuat secara otomatis
Illidan

Mengapa --forceopsi itu diperlukan?
mchawre

221

Jika tidak memiliki file yaml:

kubectl get pod PODNAME -n NAMESPACE -o yaml | kubectl replace --force -f -


19
$ kubectl replace --force -f <resource-file>

jika semuanya berjalan dengan baik, Anda akan melihat sesuatu seperti:

<resource-type> <resource-name> deleted
<resource-type> <resource-name> replaced

detailnya dapat ditemukan di dokumentasi Kubernetes, halaman "manage-deployment" dan kubectl-cheatsheet pada saat penulisan.


Bagaimana saya tahu seperti apa file resource untuk pod itu? Saya melihat file ./pod.json tetapi tautannya tidak menyebutkan templat apa pun atau serupa
Dominique Paul

7

Jika Podmerupakan bagian dari Deploymentatau Service, menghapusnya akan memulai ulang Poddan, berpotensi, menempatkannya ke node lain:

$ kubectl delete po $POD_NAME

replacejika itu seorang individu Pod:

$ kubectl get po -n $namespace $POD_NAME -o yaml | kubectl replace -f -


2

Coba dengan menghapus pod, ia akan mencoba menarik gambar lagi.

kubectl delete pod <pod_name> -n <namespace_name>


0

Pertama coba lihat apa yang salah dengan podnya:

kubectl logs -p <your_pod>

Dalam kasus saya, ini adalah masalah dengan file YAML.

Jadi, saya perlu memperbaiki file konfigurasi dan menggantinya:

kubectl replace --force -f <yml_file_describing_pod>

0

Kemungkinan besar masalah ImagePullBackOff adalah karena gambar tidak ada atau ada masalah dengan file YAML pod.

Apa yang akan saya lakukan adalah ini

kubectl get pod -n $namespace $POD_NAME --export > pod.yaml | kubectl -f apply -

Saya juga akan melihat pod.yaml untuk mengetahui mengapa pod sebelumnya tidak berfungsi

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.