如何解决这个问题 ErrImageNeverPull pod 创建状态 kubernetes
How to resolve this issue ErrImageNeverPull pod creation status 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"]
Kubectl 描述 pod 详细信息:
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 默认情况下是否会在工作节点上查找图像是否存在?谢谢
kubernetes 创建容器时,首先会查找本地镜像,然后会尝试注册(docker 默认注册)
您收到此错误是因为:
无法在您的节点上本地找到您的图像。
您指定了 imagePullPolicy: Never
,因此您永远不会尝试从注册表下载映像
解决这个问题的方法很少,但它们通常都会指导您在本地获取图像并正确标记它。
要在您的节点上获取图像,您可以:
copy images from one node to another
从现有的 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
。更多信息请见@dryairship answer
此外,请确保对 imagePullPolicy: Never
图像使用 eval $(minikube docker-env)
,以防您使用 minikube(您没有指定任何标签,但它可能会有所帮助)。 问题
中的更多信息
我正在从驻留在主节点上的映像创建一个 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"]
Kubectl 描述 pod 详细信息:
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 默认情况下是否会在工作节点上查找图像是否存在?谢谢
kubernetes 创建容器时,首先会查找本地镜像,然后会尝试注册(docker 默认注册)
您收到此错误是因为:
无法在您的节点上本地找到您的图像。
您指定了
imagePullPolicy: Never
,因此您永远不会尝试从注册表下载映像
解决这个问题的方法很少,但它们通常都会指导您在本地获取图像并正确标记它。
要在您的节点上获取图像,您可以:
copy images from one node to another
从现有的 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
。更多信息请见@dryairship answer
此外,请确保对 imagePullPolicy: Never
图像使用 eval $(minikube docker-env)
,以防您使用 minikube(您没有指定任何标签,但它可能会有所帮助)。