2017-09-26 113 views
0

我想创建一个私人注册表,在这里我想推送我的Docker图像并使用这些图像创建部署。 我已经使用KOPS在AWS中创建了一个拥有一个主控从站的kubernetes集群。 我跟着这个链接:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/registry 来创建一个注册表服务并将它暴露在从属节点上。从kubernetes中的私有注册表中拉出图像时出现问题

然后我建立一个docker镜像,并将它作为localhost:5000 /推送到注册表中,如本链接所示。

现在,当我尝试使用此图片创建部署,我得到的错误:

未能拉形象“本地主机:5000/Postgres的-SDL”:RPC错误:代码= 2递减=错误而拉图片:获取http://localhost:5000/v1/repositories/postgres-sdl/images:拨打TCP [:: 1]:5000:用getsockopt:连接被拒绝

建设码头工人形象我的标签后,用这个名字推图像:本地主机:5000/Postgres的-SDL

我的部署yaml看起来像这样:

 image: localhost:5000/postgres-sdl 
+0

看来注册表没有运行。您是否创建了服务和注册表代理窗格? – user3151902

+0

是的,kube-registry pod和kube-registry-proxy pod正在运行,并且kube-registry服务正在运行。 –

+0

错误消息说,您搜索了'postgres-sdl'图像,但是您写道,您上传了图像'management'。是否有图像不匹配? – adebasi

回答

-1

我建议不要使用本地注册表与kubernetes! 确保它在您的配置文件中为您提供了不错的localhost:5000地址,这与使用minikube进行测试时相同,但实际上很危险。

如果集群死亡,您将丢失所有图像。

只要使用亚马逊码头注册表,这是一个安全的方法来做到这一点。

0

问题是hostport与CNI无法正常工作(请参阅this issue)。

您需要安装portmap插件并创建.conflist文件。所有这些都取决于你如何设置你的kubernetes集群。

我用下面的步骤:/opt/cni/bin

  • 我使用运河

    • 设置端口映射插件(通过containernetworking/plugins v0.6.0下载),所以我的网络配置是这样的:

      { 
      "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 
          } 
      ]} 
      

      确保文件以.conflist结尾。我将这个文件保存在/etc/cni/net.d。有关详细信息可以通过Container Networking Interface Specification

    • 重新创建代理窗格。

  • 相关问题