wake-up-neo.com

Lokales Repository von ImagePullBackOff mit Minikube

Ich versuche, Minikube und Kitematic zum Testen von Kuberneten auf meinem lokalen Computer zu verwenden. Kubernetes können jedoch kein Image in meinem lokalen Repository (ImagePullBackOff) abrufen.

Ich versuche das Problem mit diesem Problem zu lösen: Das Docker-Bild kann nicht aus dem privaten Repo gezogen werden, wenn Minikube

Aber ich habe kein /etc/init.d/docker, ich glaube es liegt an der Kinematik? (Ich bin auf OS X)

EDIT:

Ich habe https://github.com/docker/docker-registry und installiert

docker tag local-image-build localhost:5000/local-image-build

docker Push localhost:5000/local-image-build

Mein kubernetes yaml enthält:

spec:
  containers:
  - name: backend-nginx
    image: localhost:5000/local-image-build:latest
    imagePullPolicy: Always

Aber es funktioniert immer noch nicht ... Protokolle:

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:

Ich weiß nicht, ob ich auf gutem Weg bin, aber ich finde das:

http://kubernetes.io/docs/user-guide/images/

Aber ich weiß nicht was mein DOCKER_USER ist ...

kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL

EDIT 3

jetzt bin ich auf meine schote gekommen:

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"

Hilf mir, ich werde verrückt.

EDIT 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"

Ich fügte hinzu :

EXTRA_ARGS='
    --label provider=virtualbox
    --insecure-registry=192.168.99.101:5000

zu meiner docker config, aber es funktioniert immer noch nicht die gleiche nachricht ....

Ich habe übrigens mein yaml gewechselt:

 spec:
      containers:
      - name: backend-nginx
        image: 192.168.99.101:5000/local-image-build:latest
        imagePullPolicy: Always

Und ich führe meine Registry so aus:

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

Ich glaube, ich habe es gelöst

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

statt nur

minikube start

$ REG_IP ist:

REG_IP=docker-machine ip registry

Quelle

11
Xero

Verwenden Sie die minikube docker-Registrierung anstelle Ihres lokalen Dockers

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

Stellen Sie den Docker so ein, dass er auf den Minikube zeigt

eval $(minikube docker-env)

Zum minikube docker drücken

docker build -t hello-node:v1 .

Stellen Sie Ihre Bereitstellung so ein, dass IfNotPresent nicht abgerufen wird

K8S ist standardmäßig auf "Immer" eingestellt. Wechseln Sie zu "IfNotPresent".

imagePullPolicy: IfNotPresent

Verwandte Ausgabe

17
Doug

Hinzufügen von --insecure-registry = "$ REG_IP": 80 scheint für mich nicht zu funktionieren. 

Ich muss die Antwort von wlredeye bei verwenden. Das Docker-Image kann nicht aus dem privaten Repo gezogen werden, wenn Minikube Verwendet wird, damit es funktioniert:

Für eine http-Registrierung funktionieren diese Schritte für mich:

  1. minikube ssh
  2. bearbeiten Sie/var/lib/boot2docker/profile und fügen Sie $ EXTRA_ARGS --insecure-registry 192.168.99.1(your local machine's IP):5000 hinzu.
  3. starten Sie den Docker-Daemon neu Sudo /etc/init.d/docker restart
  4. Stellen Sie sicher, dass Sie auf die Docker-Registrierung zugreifen können curl -s -S http://192.168.99.1/v2/_catalog

Dies ist die Minikube-Version: v0.14.0

1
Y. Zhang

Zuerst müssen Sie eine lokale Registrierung starten, anscheinend haben Sie es getan.

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

Sie können Ihre Minikube-IP-Adresse überprüfen, indem Sie ifconfig verwenden.

Es sollte ausgegeben werden (nachdem minikube mit virtualbox als VMdriver gestartet wurde):

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)

Verwenden 

minikube start --insecure-registry=192.168.99.1:5000

Sie können tatsächlich prüfen, ob Sie Ihre eigenen Bilder einfach per (innerhalb von Minikube) ziehen können. 

docker pull 192.168.99.1:5000/your_own_repo/your_own_images

Hoffe das könnte helfen.

0
M. Pong

Ich könnte das Problem auf eine sehr seltsame Weise lösen:

  • Löschen Sie den Minikube-Cluster minikube delete
  • Löschen Sie die Minikube-Konfigurationsdateien rm -rf ~/.minikube
  • Minikube starten minikube start
0
Always_Beginner