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?

Dilshani Subasinghe
sumber

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>
Ayon Nahiyan
sumber
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 -

Maciek Sawicki
sumber
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.

eversMcc
sumber
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 -

Carlos Nunez
sumber
2

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

kubectl delete pod <pod_name> -n <namespace_name>

Sachin Arote
sumber
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>
edubriguenti
sumber
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

Ankur Kothari
sumber