web-dev-qa-db-fra.com

Tirez une image locale pour exécuter un pod dans Kubernetes

J'ai l'image suivante créée par un Dockerfile:

TAILLE DE CRÉATION D'IDENTIFICATION D'IMAGE D'ÉTIQUETTE DE DÉPÔT 

Ruby/lab dernier f1903b1508cb Il y a 2 heures 729,6 Mo

Et j'ai mon fichier YML suivant:

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

Lorsque je crée le déploiement, j'ai reçu les informations suivantes dans les pods:

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

Et:

 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"

Est-il vraiment nécessaire d'avoir un registre dans docker pour cela? Je veux juste faire un test localement et transmettre mon code/repo à un ami à des fins de test

Merci

29
CPB

Vous pouvez diriger votre client docker vers le démon docker de la machine virtuelle en exécutant 

eval $(minikube docker-env)

Ensuite, vous pouvez construire votre image normalement et créer vos ressources kubernetes normalement à l’aide de kubectl. Assurez-vous que vous avez 

imagePullPolicy: IfNotPresent

dans vos spécifications YAML ou JSON. 

En outre, un indicateur permet de transmettre des registres non sécurisés à la VM mini-cube. Toutefois, cela doit être spécifié lors de la première création de la machine.

minikube start --insecure-registry

Vous voudrez peut-être aussi lire ceci en utilisant un registre privé http://kubernetes.io/docs/user-guide/images/

53
Matt Rickard

AFAIR minikube s'exécute dans un VM et ne verra donc pas les images que vous avez construites localement sur un ordinateur hôte, mais ... comme indiqué dans https://github.com/kubernetes/minikube/blob/ master/docs/reusing_the_docker_daemon.md vous pouvez utiliser eval $(minikube docker-env) pour utiliser le démon docker exécuté sur minikube, et désormais créer votre image sur le dockeur minikubes et ainsi s’attendre à ce qu’elle soit disponible pour le moteur minikubes k8s sans extraire du registre externe

13

docker pull, extrait toutes les images manuellement dans chaque nœud .__ ou lance un DaemonSet pour extraire toutes les images

0
shenyan