【发布时间】:2018-11-17 06:16:13
【问题描述】:
我正在使用支持 Kubernetes 的 Mac 版 Docker,并且我正在努力创建一个引用本地构建的映像的 Kubernetes 部署。
docker images 的输出:
REPOSITORY TAG IMAGE
test latest 2c3bdb36a5ed
我的部署.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: helloworld-deployment
spec:
selector:
matchLabels:
app: helloworld
replicas: 1
template:
metadata:
labels:
app: helloworld
spec:
containers:
- name: aaa
image: test:latest
ports:
- containerPort: 8080
当我运行 kubectl apply -f deplyment.yaml 时创建了 pod,但是:
helloworld-deployment-764b8b85d8-2c4kl 0/1 ImagePullBackOff 0
helloworld-deployment-764b8b85d8-rzq7l 0/1 ImagePullBackOff 0
kubectl describe 这些豆荚之一给出:
Normal Scheduled 20s default-scheduler Successfully assigned helloworld-deployment-79f66d97c6-7tj2x to docker-for-desktop
Normal SuccessfulMountVolume 19s kubelet, docker-for-desktop MountVolume.SetUp succeeded for volume "default-token-72f44"
Normal BackOff 16s kubelet, docker-for-desktop Back-off pulling image "test:latest"
Warning Failed 16s kubelet, docker-for-desktop Error: ImagePullBackOff
Normal Pulling 4s (x2 over 19s) kubelet, docker-for-desktop pulling image "test:latest"
Warning Failed 2s (x2 over 17s) kubelet, docker-for-desktop Failed to pull image "test:latest": rpc error: code = Unknown desc = Error response from daemon: pull access denied for test, repository does not exist or may require 'docker login'
Warning Failed 2s (x2 over 17s) kubelet, docker-for-desktop Error: ErrImagePull
有趣的是,如果我尝试运行一些托管在 dockerhub 上的图像,那么一切都很好, 我也尝试过使用skaffold,它也很有魅力......
我看到一些关于 minikube 的类似问题,解决方案是使用 minikube docker 守护进程来构建镜像,以便可以从 Kubernetes 集群中引用它们。
我想避免设置本地存储库,那么如何使其与 Docker 的 Kubernetes 一起使用?
【问题讨论】:
-
这可能会有所帮助:blog.hasura.io/…
-
@VishalBiyani thx 但我想避免设置 localhost:5000 存储库 - 它可以工作,但每次创建新版本的应用程序时我都需要推送它。 Skaffold 似乎找到了解决这个问题的办法……
-
尝试使用图像的标记版本而不是最新版本。
-
@techtrainer 你似乎是对的。只要我给出一个有效的标记版本,一切都会正常。你知道这是为什么吗?我只是想将 Docker Edge Kubernetes 仅用于本地开发,并认为使用“最新”会是一个好主意..
-
原因很简单,没人知道最新的。所以,docker 必须上网查看最新的值是多少。只要你标记它,它就可以看到标记版本的图像在本地存在并在线检查。