imagepulbackoff本地存储库与Minikube



我试图使用minikube和kitematic在我的本地机器上测试kubernetes。但是,kubernetes无法从我的本地存储库(ImagePullBackOff)中提取图像。

我试着用这个来解决它:当使用Minikube

时,不能从私有仓库中拉docker映像

但是我没有/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

EDIT 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

现在我上了我的pod:

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

使用minikube docker注册表代替本地docker

https://kubernetes.io/docs/tutorials/stateless-application/hello-minikube/create-a-docker-container-image

设置docker指向minikube

eval $(minikube docker-env)

推送到minikube docker

docker build -t hello-node:v1 .

设置你的部署不拉IfNotPresent

K8S默认设置为"Always"改为"IfNotPresent"

imagePullPolicy: IfNotPresent

相关问题

我想我已经解决了

minikube start --vm-driver="virtualbox" --insecure-registry="$REG_IP":80

而不是

minikube start
$REG_IP is:

REG_IP=docker-machine ip registry

来源

如果您使用的是--vm-driver=none,则需要将imagePullPolicy设置为Never

imagepulpolicy: Never:假设图像在本地存在。没有试图拉出图像。

根据kubernetes文档:https://kubernetes.io/docs/concepts/containers/images/#imagepullpolicy-defaulting

如果您使用最新的标签进行部署,那么它将尝试拉取图像。在遵循wsdl -2

上的步骤后,我能够部署带有v1标记的服务。
    eval $(minikube -p minikube docker-env)
  1. minikube开始
  2. docker build——tag=my-service:v1 .
  3. kubectl创建部署my-service——image=my-service:v1
  4. kubectl expose pod "my-service"——类型= NodePort端口= 8080
  5. minikube service

在我的例子中,我必须执行以下步骤。

$ eval $(minikube docker-env)

$ minikube config set driver virtualbox

$ minikube start

查看这篇很棒的文章:如何在Kubernetes中运行本地构建的Docker映像

我的环境
  • 操作系统:Debian
  • 版本:11 (Bullseye)
  • Minikube: v1.24.0
  • Kubectl: v1.22.4
  • 码头工人:20.10.5 + dfsg1

它涵盖了所有错误的图像阶段和解决方法。

ErrImagePull

编辑deployment.yaml并添加imagePullPolicy: Never:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-local-deployment
spec:
  template:
    metadata:
      name: my-pod
    spec:
      containers:
      - name: my-container
        image: my-local-image    # The one built and tagged locally
        imagePullPolicy: Never   # So it doesn't pull the image from remote registry

ErrImageNeverPull

执行命令eval $(minikube -p minikube docker-env)

输出将本地Docker守护进程指向minikube内部Docker注册表所需的环境变量

最后

重新构建映像,将其安装在minikube注册表中:

docker build . -t my-image

添加-insecure-registry="$REG_IP":80似乎不适合我。

我不得不使用wlredye的答案当使用Minikube时,不能从私有仓库中提取docker映像要使它工作:

对于http注册表,以下步骤适用于我:

    <
  1. minikube ssh/gh>编辑/var/lib/boot2docker/profile并添加到$EXTRA_ARGS中--insecure-registry 192.168.99.1(your local machine's IP):5000
  2. 重启docker守护进程sudo /etc/init.d/docker restart
  3. 验证您可以访问docker注册表curl -s -S http://192.168.99.1/v2/_catalog

这是minikube版本:v0.14.0

首先你需要启动一个本地注册表,似乎你已经完成了。

docker run -d -p 5000:5000 --restart=always --name myregistry registry:2

您可以通过ifconfig查看您的minikube IP

在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

希望这可能会有所帮助。

Mac我在minikube中有dns解析问题,因为/etc/resolv.conf配置了我的Mac ip。我没有在本地安装dns服务器,所以minikube无法解析任何内容。

我用安装本地dns-server

解决了这个问题
brew install dnsmasq
sudo brew services start dnsmasq

在Mac中我安装了docker客户端所以我必须做

minikube config set driver docker
minikube start

启动minikube

minikube start --insecure-registry "10.0.0.0/24,192.168.39.0/24"
minikube addons enable registry

查找minikube IP

minikube ip

设置码头工人/insecure-registry

# edit /etc/docker/daemon.json
{
  ...
  "insecure-registries": [ "your-minikube-ip:5000" ]
  ...
}

推送图片

docker build --tag $(minikube ip):5000/local-image-build:latest
docker push $(minikube ip):5000/local-image-build:latest

享受它。

:
https://minikube.sigs.k8s.io/docs/handbook/pushing/#4-pushing-to-an-in-cluster-using-registry-addon

在我的情况下(在M1上运行minikube),添加imagePullPolicy: Never修复了这个问题

如果您在Windows中使用minikube

我通过在minikube集群中像下面这样构建我的映像来解决这个问题,因为我只是想测试它。

进入你想要创建镜像的目录

尝试下面的命令在本地的minikube中构建您的映像

minikube image build -t your_image_name:tag .

然后您可以在您的部署中使用标记来引用此图像。Yaml或pods。yaml

我在CentOS7中进行了测试,并为我工作。

首先使用以下命令将图像加载到minikube:minikube image load test/kubia

查看minikube的图片列表:minikube image ls

然后不要从远程通过配置yaml文件拉出

apiVersion: v1               
kind: Pod                    
metadata:
  name: kubia-manual         
spec:
  containers:
  - image: test/kubia
    name: kubia
    # This will use local image from minikube image list
    imagePullPolicy: Never
    ports:
    - containerPort: 8080
      protocol: TCP
NAME           READY   STATUS    RESTARTS   AGE
kubia-manual   1/1     Running   0          7s

相关内容

  • 没有找到相关文章

最新更新