首先,我创建一个本地Docker注册表...
docker run -d -p 5000:5000 --restart=always --name registry registry:2
然后我按下
docker push localhost:5000/jrg/hello-k8s
我确认到
$ docker pull localhost:5000/jrg/hello-k8s
Using default tag: latest
latest: Pulling from jrg/hello-k8s
Digest: sha256:c475cb7167208e8f018e54ad81d4b7bbbb9c14875bc1624bcce730edf9afede0
Status: Image is up to date for localhost:5000/jrg/hello-k8s:latest
然后我启动Minikube
minikube start --insecure-registry=localhost:5000
但是当我跑步
kubectl create deployment hello-k8s --image=localhost:5000/jrg/hello-k8s
我明白了
NAME READY STATUS RESTARTS AGE
hello-k8s-75846c4bfc-b7zp7 0/1 ErrImagePull 0 4s
我想念什么?
更新
我也尝试过(假设5.5.5.5是我的无线适配器的IP地址(通过在浏览器中访问进行确认)。
然后我启动Minikube
minikube start --insecure-registry=5.5.5.5:5000
但是当我跑步
kubectl create deployment hello-k8s --image=5.5.5.5:5000/jrg/hello-k8s
但是我仍然遇到同样的问题,过了一会儿它似乎变成了ImagePullBackOff
FYI项目(https://github.com/jrgleason/hello-kubernetes/tree/ADD_CASSANDRA)
答案 0 :(得分:1)
我认为问题是localhost
将引用kubernetes主机本身,而不是您的注册表。
您需要这样做,以便可以从minikube内部访问注册表。尝试使用计算机的IP地址代替localhost
。
有一个用于minikube的代理插件,可让您从minikube中访问localhost
。我建议将其设置为最简单的解决方案https://github.com/Faithlife/minikube-registry-proxy
如果这不起作用,这里有一个指南来设置带有本地注册表https://blog.hasura.io/sharing-a-local-registry-for-minikube-37c7240d0615/的minikube
答案 1 :(得分:0)
如果您使用minikube,则必须在minikube计算机上启动docker注册表。 您可以使用minikube注册表插件,也可以自己使用docker。确保使用minikube主机中的docker守护程序:
eval $(minikube docker-env)
然后必须将映像推送到正确的注册表,然后通过使用远程泊坞窗守护程序来构建并推送到“本地主机”(在这种情况下为迷你库VM)