Запуск приложения Openshift Origin против небезопасного реестра приводит к зависанию модуля с ошибкой при извлечении образа

Я использую Openshift Origin в контейнере Docker и извлек образ из реестра Docker (контейнер на той же виртуальной машине RHEL), используя:

oc new-app --insecure-registry=true --docker-image=mtl-vm375:5000/jenkins:1.0

Эта команда, казалось, работала нормально в то время. Однако модуль остается как «ContainerCreating», а результат kubectl описывает модули:

OPENSHIFT_DEPLOYMENT_NAME:        jenkins-1
OPENSHIFT_DEPLOYMENT_NAMESPACE:   default
 Conditions:
  Type          Status
  Ready         False
Volumes:
  deployer-token-3bls9:
Type:       Secret (a volume populated by a Secret)
  SecretName: deployer-token-3bls9
Events:
  FirstSeen     LastSeen        Count   From                    SubobjectPath   Type            Reason          Message
  ---------     --------        -----   ----                    -------------   --------        ------          -------
  2h            4m              33      {kubelet mtl-vm375}                     Warning         FailedSync      Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "Error while pulling image: Get https://index.docker.io/v1/repositories/openshift/origin-pod/images: dial tcp 10.230.22.20:443: connection refused"

2h    6s      652     {kubelet mtl-vm375}             Warning FailedSync      Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"openshift/origin-pod:v1.1.5\""

Имеет ошибку, которая показывает, что он пытается использовать https, что, как я предполагаю (но не уверен), является ошибкой, поскольку у меня еще нет правильно настроенного https с сертификатами:

В соответствии с другим советом по Stackoverflow я добавил эти переменные среды в образ Origin: KUBE_ENABLE_INSECURE_REGISTRY=true EXTRA_DOCKER_OPTS=--insecure-registry

У меня также были аналогичные результаты с: KUBE_ENABLE_INSECURE_REGISTRY=true\ EXTRA_DOCKER_OPTS="--insecure-registry 10.230.22.20"

Информация о версии:

[root@mtl-vm375 origin]# oc version 
oc v1.1.5-52-gd58f979 kubernetes v1.2.0-36-g4a3f9c5

и

[root@mtl-vm375 ~]# docker version
Client:
 Version:      1.8.2-el7.centos
 API version:  1.20
 Package Version: docker-1.8.2-10.el7.centos.x86_64
 Go version:   go1.4.2
 Git commit:   a01dc02/1.8.2
 Built:
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.2-el7.centos
 API version:  1.20
 Package Version:
 Go version:   go1.4.2
Git commit:   a01dc02/1.8.2
 Built:
 OS/Arch:      linux/amd64

Заранее спасибо,

Джон


person John Kelty    schedule 15.04.2016    source источник
comment
вы уже пробовали эту команду с --loglevel=5? + можете ли вы вытащить образ вручную после входа в Docker в своем реестре? + Вы регистрируете настоящий реестр докеров или реестр openshift   -  person lvthillo    schedule 16.04.2016
comment
«Лучший» способ — защитить реестр OpenShift. Отметьте свой образ jenkins и отправьте его в свой реестр OpenShift (откройте свой реестр, если вы хотите отправить его из-за пределов вашего кластера). Чем OpenShift может использовать образ везде в кластере   -  person lvthillo    schedule 16.04.2016
comment
Даже с помощью команды oc new-app --loglevel=5 --insecure-registry=true --docker-image=mtl-vm375:5000/jenkins:1.0 журнал больше не предоставляется: [root@mtl-vm375 origin]# oc logs jenkins-1-deploy Error from server: container "deployment" in pod "jenkins-1-deploy" is waiting to start: ContainerCreating Прямо сейчас я использую настоящий реестр Docker, а не openshift, и без проблем могу вытащить его из репозитория Docker вручную. Я не пробовал по-другому, когда он помещается в сам реестр Openshift. Это хорошее предложение. Я попробую.   -  person John Kelty    schedule 16.04.2016
comment
пометьте свое изображение как service-ip:5000/project/image. Вы выбираете openshift в качестве проекта, чем создаете поток изображений, который известен всему кластеру. Если вы хотите отправить данные извне в свой реестр, вам нужно его открыть (docker-regsitry.xxx:443/..).   -  person lvthillo    schedule 16.04.2016
comment
Я попытался выполнить то, что вы хотите, с другим реестром. Я опубликую в качестве ответа. Вы также можете попробовать это   -  person lvthillo    schedule 16.04.2016


Ответы (2)


Это шаги, которые я выполнил, чтобы использовать образ из другого реестра Docker (даже за пределами моего кластера).

Мой реестр:

https://ec2-xx-xx-xx-xx.eu-central-1.compute.amazonaws.com:5000

Я создаю проект (в ОС) туда, куда я хочу нажать.

$ oc new-project test

Я внутри проекта, и я создам секрет, чтобы мой openshift мог получить доступ к моему реестру:

$ oc secrets new-dockercfg mysecret --docker-server=https://ec2-xx-xx-xx-xx.eu-central-1.compute.amazonaws.com:5000 --docker-username=testuser --docker-password=testpassword [email protected]

добавить секрет в serviceaccounts

$ oc secrets add serviceaccount/default secrets/mysecret --for=pull    
$ oc secrets add serviceaccount/builder secrets/mysecret

импортировать поток изображений

$ oc import-image --insecure ec2-xx-xx-xx-xx.eu-central-1.compute.amazonaws.com:5000/test/name-of-image:1 --confirm

Теперь вы можете создать

oc new-app --insecure-registry <image-stream-name>:tag

Лучший способ — отправить ваши образы в реестр OpenShift. Тогда не нужно создавать секрет и выполнять oc import. Вы можете открыть реестр (защищенный реестр), чтобы иметь доступ к реестру из-за пределов вашего кластера для передачи изображений.

person lvthillo    schedule 16.04.2016
comment
Спасибо, lorenzvth7! Я следовал вашим инструкциям в последнем посте о другом реестре Docker, и это сработало! Наш сервер не может получить доступ к концентратору Docker или аналогичным сайтам из-за ограничений брандмауэра, поэтому у меня были ошибки о origin-pod и origin-deployer, которые я исправил, пометив и отправив в Docker. В конечном итоге я перейду на реестр Openshift, хотя подозреваю, что брандмауэр сделает это более сложным. Прямо сейчас у меня все еще не удалось развернуть новое приложение из-за другой ошибки. Мы можем считать это закрытым. Я изучу свою текущую проблему и открою новый вопрос, если это необходимо. - person John Kelty; 16.04.2016

Если у вас возникают проблемы с Openshift Builder после обновления импорта :tag посредством повторной публикации (повторного импорта)

  • Ваши сборки OpenShift, похоже, не используют последний тег изображения, который вы опубликовали через oc import-image.

    1. open the "Builder-Configuration of your app",
    2. переходим в раздел «Конфигурация образа»
    3. и переключите значение «Сборка из» с «Репозиторий образов Docker» на «Тег потока изображений».
    4. и выберите там пространство имен, поток изображений и тег.

Обзор конфигурации Builder:

Конфигурация построителя приложения

  • Установка нового значения «Docker Image Repository» не помогла.
  • Установка галочки на "Всегда тянуть сборку..." тоже не помогла.

Измени это...

Конфигурация построителя вашего приложения

к этому ...

Конфигурация Builder изменена в вашем приложении

person Community    schedule 28.12.2016