我正在尝试使用minikube和kitematic在我的本地机器上测试kubernetes。但是,kubernetes无法在我的本地存储库(ImagePullBackOff)中提取图像。
我尝试解决此问题:Can not pull docker image from private repo when using Minikube
但我没有/etc/init.d/docker,我认为这是因为运动学? (我在OS X上)
编辑:
我安装了https://github.com/docker/docker-registry和
docker tag local-image-build localhost:5000/local-image-build
docker push localhost:5000/local-image-build
我的kubernetes yaml包含:
spec:
containers:
- name: backend-nginx
image: localhost:5000/local-image-build:latest
imagePullPolicy: Always
但它还没有奏效...... 日志:
Error syncing pod, skipping: failed to "StartContainer"
for "backend-nginx" with ErrImagePull: "Error while pulling image:
Get http://127.0.0.1:5000/v1/repositories/local-image-build/images:
dial tcp 127.0.0.1:5000: getsockopt: connection refused
编辑2:
我不知道我是否走上了好路,但我发现了这一点:
http://kubernetes.io/docs/user-guide/images/
但我不知道我的DOCKER_USER是什么......
kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
编辑3
现在我上了我的吊舱:
Failed to pull image "local-image-build:latest": Error: image library/local-image-build not found
Error syncing pod, skipping: failed to "StartContainer" for "backend-nginx" with ErrImagePull: "Error: image library/local-image-build not found"
帮助我,我疯了。
编辑4
Error syncing pod, skipping: failed to "StartContainer" for "backend-nginx" with ErrImagePull: "Error response from daemon: Get https://192.168.99.101:5000/v1/_ping: tls: oversized record received with length 20527"
我补充说:
EXTRA_ARGS='
--label provider=virtualbox
--insecure-registry=192.168.99.101:5000
到我的docker配置,但它仍然不起作用,相同的消息......
顺便说一句,我改变了我的yaml:
spec:
containers:
- name: backend-nginx
image: 192.168.99.101:5000/local-image-build:latest
imagePullPolicy: Always
我按照这样运行我的注册表:
docker run -d -p 5000:5000 --restart=always --name myregistry registry:2
答案 0 :(得分:15)
使用minikube docker注册表而不是本地docker
eval $(minikube docker-env)
docker build -t hello-node:v1 .
K8S默认设置为"始终" 更改为" IfNotPresent"
imagePullPolicy: IfNotPresent
答案 1 :(得分:12)
我想我已经解决了
minikube start --vm-driver="virtualbox" --insecure-registry="$REG_IP":80
而不仅仅是
minikube start
$ REG_IP是:
REG_IP=docker-machine ip registry
答案 2 :(得分:0)
添加--insecure-registry =“$ REG_IP”:80似乎对我不起作用。
我必须使用wlredeye的答案 Can not pull docker image from private repo when using Minikube 让它运作:
对于http注册表,此步骤适用于我:
--insecure-registry 192.168.99.1(your local machine's IP):5000
sudo /etc/init.d/docker restart
curl -s -S http://192.168.99.1/v2/_catalog
这是minikube版本:v0.14.0
答案 3 :(得分:0)
首先你需要启动一个本地注册表,好像你已经完成了它。
docker run -d -p 5000:5000 --restart=always --name myregistry registry:2
您可以ifconfig
应该有输出(在minikube开始使用virtualbox作为VMdriver后):
vboxnet0 Link encap:Ethernet HWaddr 0a:00:27:00:00:00
inet addr:192.168.99.1 Bcast:192.168.99.255 Mask:255.255.255.0
inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:515 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:86256 (86.2 KB)
使用
minikube start --insecure-registry=192.168.99.1:5000
您实际上可以通过(在minikube内)
来检查是否可以自己拍摄图像 docker pull 192.168.99.1:5000/your_own_repo/your_own_images
希望这可能有所帮助。
答案 4 :(得分:0)
在Mac中我在minikube中无法解析dns,因为/etc/resolv.conf是用我的mac ip配置的。我没有在本地安装dns服务器,因此minikube无法解决任何问题。
我通过在本地安装dns-server解决了这个问题
brew install dnsmasq
sudo brew services start dnsmasq
答案 5 :(得分:0)
就我而言,我必须执行以下步骤。
$ eval $(minikube docker-env)
$ minikube配置设置驱动程序virtualbox
$ minikube开始
答案 6 :(得分:0)
如果您使用的是--vm-driver=none
,则需要将https://github.com/WebDevSimplified/Mybrary设置为Never
。
imagePullPolicy:从不:假定图像在本地存在。没有 尝试拉出图像。
答案 7 :(得分:0)
在 Mac 中,我安装了 docker 客户端,所以我必须这样做
minikube config set driver docker
minikube start
答案 8 :(得分:-2)
我可以用一种非常奇怪的方式解决这个问题:
minikube delete
rm -rf ~/.minikube
minikube start