docker - 具有私有 docker 注册表 v2 的 Kubernetes
问题描述
我正在尝试设置一个私有 docker 注册表以与 Kubernetes 一起使用。我已经设置了注册表,运行 Kubernetes 集群的主服务器可以毫无问题地从注册表中提取图像。此外,我遵循了 Kubernetes 的文档,该文档解释了如何连接到私有 Docker 注册表(请参阅https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/)。
但是,当我尝试通过 Kubernetes 从 docker 注册表中提取图像时,出现以下错误:
Failed to pull image "xxx.xxx.xxx.xxx:5000/helloworld:latest": rpc error: code = Unknown desc = Error response from daemon: Get https://xxx.xxx.xxx.xxx:5000/v1/_ping: x509: certificate signed by unknown authority
我注意到以v1/_ping结尾的链接不正确,应该是v2/_ping。
我运行以下命令来生成我的regcred:
kubectl create secret docker-registry regcred --docker-server="https://xxx.xxx.xxx.xxx:5000/v2/" --docker-username=xxxxx --docker-password=xxxxxx --docker-email=xxxx@xxx.xx
我也google了一下,发现了这个: https ://github.com/kubernetes/kubernetes/issues/20786
不幸的是,这些建议没有帮助,但它们确实表明更多人面临同样的问题。
有人知道如何使用 Kubernetes 正确设置 docker registry v2 吗?
谢谢
解决方案
解决了这个问题,默认情况下主服务器不会启动您的部署。所以我需要在我的从服务器上执行以下操作:
- 将证书添加到 /etc/docker/certs.d/my-registry-domain.com[:port]/ca.crt
- 做 docker login my-registry-domain.com[:port]
- 将 docker 注册表密钥添加到 Kubernetes(请参阅https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/)--docker-server=docker-registry-domain.com/ v2/ 或 v1 取决于您运行的内容
- 现在它将成功地从 docker 注册表中提取图像。
希望它会帮助某人。
推荐阅读
- reactjs - 如何全局更改时刻配置
- javascript - servlet转发操作时如何触发javascript函数
- java - 工作表级别的 Apache POI 3.17 CustomProperties
- rust - One::one() 与 1 有什么区别
- c# - 如何在代码隐藏中多次将 XAML 资源(带有 ItemsControls 的网格)添加到 FlowDocument
- javascript - React 更改父数组属性
- django - 在 Django 项目停止之前做一些任务
- javascript - 如何从来自 api 的对象创建有效文件?
- r - 重命名列条目,当它是按组的最大值时,会给出不一致的结果
- php - IMAP 检查邮件来自哪个邮件客户端