docker - Openshift:TLS错误从其自己的注册表中提取Docker镜像

标签 docker jenkins openshift openshift-origin

我们正在尝试为其中一个应用程序(在Openshift中运行)建立构建管道,并且存在一些TLS问题。

我们正在使用Jenkins为此应用程序构建docker镜像,然后将该镜像推送到Openshift Registry。到目前为止,这是我们所做的:

将Openshift主证书复制到Jenkins:

mkdir -p /etc/docker/certs.d/docker-registry-default.router.default.svc.cluster.local
cd /etc/docker/certs.d/docker-registry-default.router.default.svc.cluster.local
scp root@<OPENSHIFT_MASTER_IP>:/etc/origin/master/ca.crt ca.crt

从 Jenkins 成功登录到注册表:
bash-4.2$ docker login -u <USER> -p <OC_TOKEN> docker-registry-default.router.default.svc.cluster.local
Login Succeeded

将图像从 Jenkins 推送到注册表(也可以):
docker push docker-registry-default.router.default.svc.cluster.local/project/app:latest

通过Openshift UI部署镜像也可以正常工作,因为在部署镜像时,我能够为我的应用选择NamespaceImageStreamTag

但是,pod启动时会发生以下错误:
Failed to pull image "docker-registry.default.svc:5000/project/app@sha256:8fd9759XXXXXXXXXXXXXXXf7fXXXXXXXXXXXXXXXXXXXXX": rpc error: code = Unknown desc = Get https://docker-registry.default.svc:5000/v2/: net/http: TLS handshake timeout

知道为什么在Openshift可以看到镜像但无法在部署时提取镜像的情况下,为什么我会看到与TLS相关的错误吗?

任何帮助,将不胜感激。

最佳答案

这里的问题是Openshift Application节点与Master和Infra节点位于不同的子网上。

解决方法是将“应用程序”节点移到与“主节点”和“基础设施”节点相同的子网中,然后重建群集。

这样做之后,一切都可以进行,但是如果需要在不同子网中有节点,则可以在openshift-ansible库存文件中对其进行配置。

https://docs.okd.io/latest/install/configuring_inventory_file.html

关于docker - Openshift:TLS错误从其自己的注册表中提取Docker镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51293445/

相关文章:

postgresql - 如何重新启动我的 openshift postgres 墨盒?

kubernetes - 如何在 Openshift 中更新 Secrets(不删除和创建)?

python - 为什么人们在 docker 容器中创建 virtualenv?

python-3.x - 在默认的 Tensorflow docker 容器中将 Jupyter 更新为 Python 3.4

amazon-s3 - Docker Compose-[link/mount volume/volume_from]在容器之间共享数据,不使用主机

php - Docker mysql无法连接到容器

jenkins - 使用 Groovy-Script 在 Jenkins 中分配节点超时

Jenkins:是否有文件夹/ View 级别的安全插件

javascript - 在 OpenShift Gear 上运行 MongoDB 脚本时出错

jenkins - Kubectl 删除但忽略有错误的