2017-09-26 3 views
0

Je veux créer un registre privé dans lequel je veux pousser mes images de docker et créer un déploiement en utilisant ces images. J'ai créé un cluster kubernetes avec un esclave maître dans AWS en utilisant KOPS. J'ai suivi ce lien: https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/registry pour créer un service de registre et l'exposer sur un nœud esclave.Problème lors de l'extraction de l'image du registre privé dans kubernetes

Ensuite, je compile une image de docker et je l'insère dans le registre localhost: 5000/comme indiqué dans ce lien.

Maintenant, lorsque je tente de créer un déploiement en utilisant cette image, je reçois l'erreur:

Impossible de tirer l'image "localhost: 5000/Postgresql sdl": Erreur rpc: code = 2 desc = Erreur tout en tirant image: Obtenez http://localhost:5000/v1/repositories/postgres-sdl/images: composez le tcp [:: 1]: 5000: getsockopt: connexion refusée

Après avoir construit balise image docker I et pousser l'image avec ce nom: localhost: 5000/postgres sdl

Mon déploiement yaml ressemble à ceci:

 image: localhost:5000/postgres-sdl 
+0

Il semble que le registre ne fonctionne pas. Avez-vous créé le service et les modules de registre-proxy? – user3151902

+0

Oui, le pod kube-registry et le pod proxy-kube-registry sont en cours d'exécution et le service kube-registry est en cours d'exécution. –

+0

Le message d'erreur indique que vous avez recherché l'image 'postgres-sdl', mais vous avez écrit que vous avez téléchargé l'image' management'. Y a-t-il une discordance d'image? – adebasi

Répondre

-1

Je déconseille d'utiliser le registre local avec kubernetes! Bien sûr, il vous donne une belle adresse localhost:5000 dans vos fichiers de configuration qui est la même que lorsque vous testez avec minikube, mais c'est en fait dangereux.

Si le cluster meurt, vous perdrez TOUTES vos images. Il suffit d'utiliser amazon docker registry, c'est un moyen sûr de faire cela.

0

Le problème est que le port d'hôte ne fonctionne pas correctement avec CNI (voir this issue).

Vous devez installer un plugin portmap et créer un fichier .conflist. Tout cela peut dépendre de la façon dont vous configurez votre cluster kubernetes.

J'utilisé les étapes suivantes:

  • Définir le plugin portmap (téléchargement via containernetworking/plugins v0.6.0) dans /opt/cni/bin
  • J'utilise le canal donc ma config réseau ressemble à ceci:

    { 
    "name": "canal", 
    "cniVersion": "0.3.0", 
    "plugins": [{ 
         "type": "flannel", 
         "delegate": { 
          "type": "calico", 
          "etcd_endpoints": "https://10.128.0.3:2379", 
          "etcd_key_file": "/opt/calicoctl/etcd-key", 
          "etcd_cert_file": "/opt/calicoctl/etcd-cert", 
          "etcd_ca_cert_file": "/opt/calicoctl/etcd-ca", 
          "log_level": "info", 
          "policy": { 
           "type": "k8s" 
          }, 
          "kubernetes": { 
           "kubeconfig": "/root/cdk/kubeconfig" 
          } 
         } 
        }, 
        { 
         "type": "portmap", 
         "capabilities": { 
          "portMappings": true 
         }, 
         "snat": true 
        } 
    ]} 
    

    assurez-vous que le fichier se termine par .conflist. J'ai enregistré ce fichier dans /etc/cni/net.d. Plus d'informations à ce sujet peut être trouvé via Container Networking Interface Specification

  • Recréer le module proxy.