Registry 从kubernetes中的私有注册表中提取图像时出现问题
我想创建一个私有注册表,在其中我想推送我的docker映像并使用这些映像创建部署。 我使用KOPS在AWS中创建了一个kubernetes集群,其中有一个主集群和一个从集群。 我点击了这个链接: 创建注册表服务并在从属节点上公开它 然后我构建一个docker映像,并将其作为localhost:5000/推送到注册表中,如此链接中所示 现在,当我尝试使用此映像创建部署时,出现以下错误: 拉取映像“localhost:5000/postgres sdl”失败:rpc错误:code=2 desc=拉取映像时出错:Get:dial tcp[::1]:5000:getsockopt:连接被拒绝 构建docker映像后,我标记并推送具有以下名称的映像:localhost:5000/postgres sdl 我的部署yaml如下所示:Registry 从kubernetes中的私有注册表中提取图像时出现问题,registry,kubernetes,private,docker-registry,Registry,Kubernetes,Private,Docker Registry,我想创建一个私有注册表,在其中我想推送我的docker映像并使用这些映像创建部署。 我使用KOPS在AWS中创建了一个kubernetes集群,其中有一个主集群和一个从集群。 我点击了这个链接: 创建注册表服务并在从属节点上公开它 然后我构建一个docker映像,并将其作为localhost:5000/推送到注册表中,如此链接中所示 现在,当我尝试使用此映像创建部署时,出现以下错误: 拉取映像“localhost:5000/postgres sdl”失败:rpc错误:code=2 desc=拉取
{
"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
}
]}
我建议不要使用kubernetes的本地注册表! 当然,它在配置文件中为您提供了很好的
localhost:5000
地址,这与使用minikube进行测试时的地址相同,但实际上很危险
如果集群死亡,您将丢失所有图像
只需使用amazon docker注册表,这是一种安全的正确方法。问题在于主机端口不能与CNI正常工作(请参阅) 您需要安装一个portmap插件并创建一个.conflist文件。所有这些都取决于如何设置kubernetes集群 我使用了以下步骤:
- 在
/opt/cni/bin
- 我正在使用canal,因此我的网络配置如下所示:
确保文件以{ "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
- 重新创建代理吊舱
postgres sdl
图像,但您写了,您上载了图像管理
。是否存在映像不匹配?在我的例子中,注册表服务似乎工作正常,因为我可以使用服务ip地址访问它,推送映像并创建部署。不过,代理似乎存在一些问题。代理应该在内部将对localhost:5000的请求转换为服务ip:port。但这似乎不起作用。