webentwicklung-frage-antwort-db.com.de

Ziehen Sie ein lokales Image, um einen Pod in Kubernetes auszuführen

Ich habe folgendes Bild, das von einer Docker-Datei erstellt wurde:

REPOSITORY TAG BILD-ID ERZEUGTE GRÖSSE 

Ruby/lab neueste f1903b1508cb vor 2 Stunden 729.6 MB

Und ich habe meine folgende YML-Datei:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: Ruby-deployment
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: Ruby
    spec:
      containers:
      - name: Ruby-app
        image: Ruby/lab
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 4567

Beim Erstellen der Bereitstellung habe ich die folgenden Informationen in den Pods erhalten:

Ruby-deployment-3830038651-sa4ii   0/1       ImagePullBackOff   0          7m
Ruby-deployment-3830038651-u1tvc   0/1       ImagePullBackOff   0          7m

Und:

 8m            2m              6       {kubelet minikube}      spec.containers{Ruby}   Normal          Pulling         pulling image "Ruby/lab:latest"
  8m            2m              6       {kubelet minikube}      spec.containers{Ruby}   Warning         Failed          Failed to pull image "Ruby/lab:latest": Error: image Ruby/lab not found
  8m            2m              6       {kubelet minikube}                              Warning         FailedSync      Error syncing pod, skipping: failed to "StartContainer" for "Ruby" with ErrImagePull: "Error: image Ruby/lab not found"

Ist wirklich eine Registrierung im Docker nötig? Ich möchte nur lokal testen und meinen Code/Repo zu Testzwecken an einen Freund weitergeben

Vielen Dank

29
CPB

Sie können Ihren Docker-Client durch Ausführen auf den Docker-Daemon der VM verweisen 

eval $(minikube docker-env)

Dann können Sie Ihr Image normal erstellen und Ihre Kubernetes-Ressourcen normalerweise mit kubectl erstellen. Stellen Sie sicher, dass Sie haben 

imagePullPolicy: IfNotPresent

in Ihren YAML- oder JSON-Spezifikationen. 

Darüber hinaus gibt es ein Flag, das unsichere Registries an die Minikube-VM übergeben soll. Dies muss jedoch beim ersten Erstellen der Maschine angegeben werden.

minikube start --insecure-registry

Sie können dies auch lesen, wenn Sie eine private Registry verwenden http://kubernetes.io/docs/user-guide/images/

53
Matt Rickard

AFAIR-Minikube wird in einer VM ausgeführt, daher werden die von Ihnen lokal erstellten Images nicht auf einem Host-Computer angezeigt, sondern ... wie in https://github.com/kubernetes/minikube/blob/ angegeben. master/docs/reusing_the_docker_daemon.md Sie können eval $(minikube docker-env) verwenden, um den Docker-Daemon, der auf Minikube ausgeführt wird, tatsächlich zu verwenden, und fortan Ihr Image auf dem Minikubes-Docker erstellen

andern, zieht alle Bilder manuell in jeden Knoten oder führt ein DaemonSet aus, um alle Bilder abzurufen

0
shenyan