วิธีการลองดึงภาพใน kubernetes Pods อีกครั้ง


92

ฉันยังใหม่กับ kubernetes ฉันมีปัญหาในพ็อด เมื่อฉันรันคำสั่ง

 kubectl get pods

ผลลัพธ์:

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

เนื่องจากปัญหาของโหนด "wso2am-default-813fy" ฉันต้องรีสตาร์ท ข้อเสนอแนะใด ๆ ?

คำตอบ:


69

โดยปกติในกรณีของ "ImagePullBackOff" จะมีการลองใหม่หลังจากนั้นไม่กี่วินาที / นาที ในกรณีที่คุณต้องการลองอีกครั้งด้วยตนเองคุณสามารถลบพ็อดเก่าและสร้างพ็อดใหม่ได้ คำสั่งบรรทัดเดียวเพื่อลบและสร้างพ็อดใหม่คือ:

kubectl replace --force -f <yml_file_describing_pod>

6
หากคุณมีชุดจำลอง / คอนโทรลเลอร์ที่จัดการพ็อดนี้ควรสร้างพ็อดใหม่โดยอัตโนมัติหลังจากฆ่ามัน
เหม

^^ อย่างแน่นอน ฉันจะกังวลมากถ้าหากการฆ่าฝักมันหายไปโดยดี
Damien Roche

3
ฉันเชื่อว่าkubectl replace --force -f ...จะเทียบเท่ากับการลบตามด้วย create
Oliver

1
หากพ็อดของคุณสร้างผ่านการทำให้ใช้งานได้เพียงแค่ลบพ็อด - อันใหม่จะถูกสร้างขึ้นโดยอัตโนมัติ
Illidan

ทำไมต้องมี--forceตัวเลือก
mchawre


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

หากทุกอย่างเป็นไปด้วยดีคุณจะเห็นสิ่งต่างๆเช่น:

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

รายละเอียดนี้สามารถพบได้ในเอกสาร Kubernetes, " Manage- deployment" และkubectl-cheatsheetในขณะที่เขียน


ฉันจะทราบได้อย่างไรว่าไฟล์ทรัพยากรสำหรับพ็อดควรมีลักษณะอย่างไร ฉันเห็นไฟล์. / pod.json แต่ลิงก์ไม่ได้กล่าวถึงเทมเพลตหรือสิ่งที่คล้ายกันใด ๆ
Dominique Paul

7

หากPodเป็นส่วนหนึ่งของDeploymentหรือการServiceลบจะเริ่มต้นใหม่Podและอาจวางไว้บนโหนดอื่น:

$ kubectl delete po $POD_NAME

replaceถ้าเป็นบุคคลPod:

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



0

ก่อนอื่นให้ลองดูว่ามีอะไรผิดปกติกับพ็อด:

kubectl logs -p <your_pod>

ในกรณีของฉันมันเป็นปัญหากับไฟล์ YAML

ดังนั้นฉันต้องแก้ไขไฟล์คอนฟิกูเรชันและแทนที่:

kubectl replace --force -f <yml_file_describing_pod>

0

ปัญหาส่วนใหญ่ของ ImagePullBackOff เกิดจากรูปภาพไม่ปรากฏหรือมีปัญหากับไฟล์ Pod YAML

สิ่งที่ฉันจะทำคือสิ่งนี้

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

ฉันจะเห็น pod.yaml ด้วยเพื่อดูว่าทำไมพ็อดก่อนหน้านี้ไม่ทำงาน

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