Kubernetes的ErrImagePull和ImagePullBackOff的详细信息

ErrImagePull and ImagePullBackOff cover
    • コンテナイメージ

 

    • イメージのプル

 

    • イメージのプルポリシー

 

    • ErrImagePull

 

    • ErrImagePullのデバッグ

 

    • イメージプルエラーの監視

 

    その他のイメージエラー

 

容器图像

容器容器映像

容器注册表

Push: イメージをアップロードし、リポジトリで利用できるようにする

Pull:コンテナで使用するためにイメージをダウンロードする

 

在这个例子中,我们使用了Docker CLI,但只要是实现了Open Container Initiative Distribution规范的工具,就可以用它来进行与容器注册表的所有交互。

图像下载

最新的

获取指定名称的图像

最新的

docker pull nginx
kubectl run mypod nginx

 

使用名字和标签来提取图像

最新的 (zuì de)

docker pull nginx:1.23.1-alpine
kubectl run mypod nginx:1.23.1-alpine

关于标签可更改性的文章

通过摘要获取印象

 

docker pull sha256:d164f755e525e8baee113987bdc70298da4c6f48fdc0bbd395817edf17cf7c2b
kubectl run mypod --image=nginx:sha25645b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5

 

形象推送策略

 

    • Always

 

    • IfNotPresent

 

    Never

 

一直

一直

如果不存在的话

如果不存在

永不

永远不要

图片永远不要被拉取

ImagePullPolicy description: always, never and ifnotpresent

入场控制器

默认的图像拉取策略

    • imagePullPolicyを省略し、タグがlatestの場合、imagePullPolicyはAlwaysに設定されます。

 

    • imagePullPolicy を省略し、イメージのタグを指定すると、imagePullPolicy は Always に設定されます。

 

    imagePullPolicy を省略し、タグを latest 以外の値に設定した場合、imagePullPolicy は IfNotPresent に設定されます。

 

错误图像拉取

kubelet = kubelet

$ kubectl get pods
NAME    READY   STATUS             RESTARTS   AGE
goodpod 1/1     Running            0          21h
mypod   0/1     ErrImagePull       0          4s

 

    • Podは READY ステータスではない

 

    ステータスは ErrImagePull

 

$ kubectl logs mypod --all-containers
Error from server (BadRequest): container "mycontainer" in pod "mypod" is waiting to start: trying and failing to pull image

 

镜像拉取失败

CrashLoopBackOff状态

$ kubectl get pods
NAME    READY   STATUS             RESTARTS   AGE
goodpod 1/1     Running            0          21h
mypod   0/1     ImagePullBackOff   0          84s

 

    • Podは READY ステータスでない

 

    • ステータスはImagePullBackOff

 

    CrashLoopBackOffとは異なり、再起動はない(厳密にはPodは起動すらしていない)

 

$ kubectl describe pod mypod
State:          Waiting
Reason:       ImagePullBackOff
...
Warning  Failed     3m57s (x4 over 5m28s)  kubelet            Error: ErrImagePull
Warning  Failed     3m42s (x6 over 5m28s)  kubelet            Error: ImagePullBackOff
Normal   BackOff    18s (x20 over 5m28s)   kubelet            Back-off pulling image "failed-image"

 

ErrImagePull and ImagePullBackOff timeline

ErrImagePull和ImagePullBackOff的时间轴

调试ErrImagePull和ImagePullBackOff

 

    • イメージが間違っている

 

    • イメージタグが正しくない

 

    • イメージのダイジェストが間違っている

 

    • ネットワークの問題、またはイメージリポジトリが利用できない

 

    プライベートレジストリからのプルであるが、imagePullSecret が提供されていない

 

$ kubectl describe pod podname
$ kubect logs podname –all-containers
$ kubectl get events --field-selector involvedObject.name=podname

 

Three terminals with debugging options for ErrImagePull and ImagePullBackOff

 

其他图像错误

错误的图片永远不要拉取

 

等待中

 

监控 Prometheus 中的图像拉取错误

 

kube_pod_container_status_waiting_reason{reason="ErrImagePull"}
kube_pod_container_status_waiting_reason{reason="ImagePullBackOff"}

 

Monitoring ErrImagePull and ImagePullBackOff in Prometheus

用 Prometheus 监控 ErrImagePull 和 ImagePullBackOff

kube_pod_container_status_waiting_reason{reason="ErrImageNeverPull"}

 

总结

 


请使用Sysdig Monitor进行解决Image Pull错误的故障排除。

 

Troubleshooting ErrImagePull and ImagePullBackOff in Sysdig Monitor

在解决Sysdig Monitor的ErrImagePull和ImagePullBackOff问题时的故障排除方法。

请试用30天,享受免费体验!

广告
将在 10 秒后关闭
bannerAds