OpenShift docker注册表无法从registry-1.docker.io中提取图像

问题描述 投票:1回答:1

我正在使用OpenShift版本:

oc v3.10.0+dd10d17
kubernetes v1.10.0+b81c8f8
features: Basic-Auth GSSAPI Kerberos SPNEGO

Server https://127.0.0.1:8443
openshift v3.10.0+e3465d0-44
kubernetes v1.10.0+b81c8f8

我的码头版本是:

Client:
  Version:           18.06.1-ce
  API version:       1.38
  Go version:        go1.10.3
  Git commit:        e68fc7a
  Built:             Tue Aug 21 17:24:56 2018
  OS/Arch:           linux/amd64
  Experimental:      false

Server:
  Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       e68fc7a
  Built:            Tue Aug 21 17:23:21 2018
  OS/Arch:          linux/amd64
  Experimental:     false

要在我的计算机上启动本地OpenShift集群,我按照以下步骤操作:https://github.com/openshift/origin/blob/master/docs/cluster_up_down.md#linux

我想部署一个Redis实例,因为没有默认的Redis模板(有20个默认模板),我将其作为JSON模板从URL加载:https://github.com/openshift/origin/blob/master/examples/db-templates/redis-ephemeral-template.json

从此模板创建应用程序时,Redis pod无法启动并发出以下错误信号:

无法提取图像“172.30.1.1:5000/openshift/redis@sha256:0cf7163e0589baab918b1d70cd1ed4c711e2430c618c672b9121f1fd35cf562a”:rpc错误:代码=未知desc =来自守护程序的错误响应:未知:无法从docker.io/centos/redis-32-提取清单centos7:latest:获取https://registry-1.docker.io/v2/:net / http:请求在等待连接时被取消(在等待标题时超出了Client.Timeout)

当我通过提供码头图像openshiftroadshow/parksmap-katacoda:1.0.0来部署应用程序时 - 它正在被拉动并成功部署。

我已经登录了在172.30.1.1:5000发布的容器,该容器托管了OpenShift的docker注册表,并且解决registry-1.docker.io域显然存在问题:

bash-4.2$ nslookup registry-1.docker.io
;; connection timed out; no servers could be reached

如果我指定8.8.8.8 DNS,一切都很好:

bash-4.2$ nslookup registry-1.docker.io 8.8.8.8
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   registry-1.docker.io
Address: 52.22.67.152
....

所以我查看了/etc/resolv.conf文件,这里是它的内容:

bash-4.2$ cat /etc/resolv.conf 
nameserver 172.30.0.2
search default.svc.cluster.local svc.cluster.local cluster.local home
options ndots:5

我的问题是:

  1. OpenShift是否使用了一些内部DNS解决方案?如果是这样,我应该调整其配置吗?
  2. 谁(以及在哪里)负责配置resolv.conf文件的内容?
  3. 我使用的Redis模板有什么问题吗?
  4. 一个一个地添加丢失的模板是一个好习惯,是否可以添加一堆一次丢失的有用模板?
  5. 我该怎么办才能使我的榜样有效?

我非常感谢您的帮助和时间!

docker redis openshift docker-registry openshift-origin
1个回答
1
投票

行模板:

具有:

    {
        "description": "The OpenShift Namespace where the ImageStream resides.",
        "displayName": "Namespace",
        "name": "NAMESPACE",
        "value": "openshift"
    },

并使用NAMESPACE值:

有:

                        "from": {
                            "kind": "ImageStreamTag",
                            "name": "redis:${REDIS_VERSION}",
                            "namespace": "${NAMESPACE}"
                        },

因此默认情况下模板需要redis图像的ImageStream位于openshift项目中。这个模板本身通常通过以下方式加载到openshift项目中:

在创建时已加载到openshift群集中。

因此,检查redis图像的图像流定义是否实际上已加载到openshift项目中:

oc get is/redis -n openshift --as system:admin

要么:

oc login -u system:admin
oc get is/redis -n openshift

这取决于oc cluster up的设置方式。默认情况下,第一个可能不起作用。

因此,确定redis的图像流是否首先存在。

© www.soinside.com 2019 - 2024. All rights reserved.