如何解决这个问题ErrImageNeverPull pod创建状态kubernetes



我正在从主节点上的图像创建一个pod。当我在主节点上创建一个要在工作节点上调度的pod时,我会得到pod ErrImageNeverPull 的状态

kind: Pod
metadata:
name: cloud-pipe
labels:
app: cloud-pipe
spec:
containers:
- name: cloud-pipe
image: cloud-pipeline:latest
command: ["sleep"]
args: ["infinity"]

Kuectl描述吊舱细节:

Type     Reason             Age                   From               Message
- ---     ------             ----                  ----               -------   
Normal   Scheduled          15m                   default-scheduler  Successfully assigned 
default/cloud-pipe to knode
Warning  ErrImageNeverPull  5m54s (x49 over 16m)  kubelet            Container image "cloud- 
pipeline:latest" is not present with pull policy of Never
Warning  Failed             51s (x72 over 16m)    kubelet            Error: ErrImageNeverPull

如何解决此问题。此外,我的问题是,Kubernetes是否默认情况下会在worker节点上查找映像是否存在?。感谢

当kubernetes创建容器时,它首先会查看本地映像,然后会尝试registry(默认情况下是docker registry(

您收到此错误是因为:

  • 在节点的本地找不到您的图像。

  • 您指定了imagePullPolicy: Never,所以您永远不会尝试从注册表下载图像

解决此问题的方法很少,但所有这些方法通常都会指示您在本地获取图像并正确标记它。

要在您的节点上获取图像,您可以:

  • 将图像从一个节点复制到另一个

  • 从现有Dockerfile 构建图像

获取图像后,标记它并在部署中指定

docker tag cloud-pipeline:latest mytest:mytest
kind: Pod
metadata:
name: cloud-pipe
labels:
app: cloud-pipe
spec:
containers:
- name: cloud-pipe
image: mytest:mytest
imagePullPolicy: Never
command: ["sleep"]
args: ["infinity"]

或者,您可以配置自己的本地注册表,将标记的图像推送到其中,然后使用imagePullPolicy: IfNotPresent。更多信息请访问@dryp飞艇回答

此外,请确保对imagePullPolicy: Never图像使用eval $(minikube docker-env),以防您使用minikube(您尚未指定任何标记,但这可能会有所帮助(。更多信息在获取"ErrImageNeverPull"在pods问题

相关内容

  • 没有找到相关文章

最新更新