Системный реестр OpenShift не может получить изображение из реестра-1.docker.io - PullRequest
0 голосов
/ 09 сентября 2018

Я работаю с версией 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 не может запуститься и выдает следующую ошибку:

Не удалось получить изображение ": code = Unknown desc = Ошибка ответа от демона: unknown: невозможно извлечь манифест из 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, и явно существует проблема с разрешением домена 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. Что мне нужно сделать, чтобы мой пример работал?

Буду очень признателен за вашу помощь и время!

1 Ответ

0 голосов
/ 11 сентября 2018

Шаблон в строке:

есть:

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

и использует значение NAMESPACE в:

с:

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

Таким образом, шаблон по умолчанию ожидает, что ImageStream для изображения redis будет в проекте 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 существует первым.

...