我已经成功构建了 Docker 镜像并在 Docker 群中运行它们。当我尝试构建映像并使用 Docker Desktop 的 Kubernetes 集群运行它时:
docker build -t myimage -f myDockerFile .
(以上成功在docker本地registry中创建了镜像)
kubectl run myapp --image=myimage:latest
(据我了解,这与使用 kubectl create 部署命令相同)
上面的命令成功创建了一个Deployment,但是当它创建Pod时,Pod状态总是显示:
NAME READY STATUS RESTARTS AGE
myapp-<a random alphanumeric string> 0/1 ImagePullBackoff 0 <age>
我不确定为什么它在拉取图像时遇到问题 - 它可能不知道 docker 本地图像在哪里吗?
我刚刚遇到了完全相同的问题。归结为imagePullPolicy
:
PC:~$ kubectl explain deployment.spec.template.spec.containers.imagePullPolicy
KIND: Deployment
VERSION: extensions/v1beta1
FIELD: imagePullPolicy <string>
DESCRIPTION:
Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always
if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated.
More info:
https://kubernetes.io/docs/concepts/containers/images#updating-images
具体来说,这部分说:如果指定了 :latest 标签,则默认为“始终”.
这意味着,您创建了一个本地映像,但是,因为您使用:latest
它会尝试在您配置的任何远程存储库(默认为 docker hub)中找到它,而不是使用本地存储库。只需将命令更改为:
kubectl run myapp --image=myimage:latest --image-pull-policy Never
or
kubectl run myapp --image=myimage:latest --image-pull-policy IfNotPresent
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)