openshift, как imagestream отслеживает изменения изображения? - PullRequest
0 голосов
/ 19 сентября 2018

Я обнаружил, что концепция Openshift ImageStream чрезвычайно сложна для понимания.Openshift вводит еще один абстрактный слой (по сравнению с Kubernetes), чтобы обеспечить:

Однако, если тег потока изображений, используемый Deployment или Build, не обновляется, то даже если образ Docker в реестре Dockerобновляется, сборка или развертывание будет продолжаться с использованием предыдущего (предположительно известного исправного) образа.

Я не совсем понимаю, как этого можно достичь?Я прочитал ImageStream, ImageStreamTag и ImageStreamImage, они просто указатель (или метаданные), указывающие на внешнее изображение.Он не содержит фактического изображения.

Я могу подтвердить, что после того, как я создал ImageStream (который получает изображение из концентратора докеров), изображение не отправляется в реестр по умолчанию Openshift docker-registry.default.svc:5000, я проверяювнутри, но не смог его найти.И наоборот, это действительно так, это означает, что если я помещу изображение в реестр по умолчанию, ImageStream будет создан автоматически.

Давайте рассмотрим пример ниже:

myImageStream: latest -> docker.hub / myNameSpace / myimage: latest (SHA-1234)

Если я помещаю новое изображение в последний тег docker.hub с SHA-5678, и если ImageStream не установлен как --scheduled, тозначит, мой контейнер всегда будет использовать изображение SHA-1234.

Скажем, если в другом рабочем узле раскручивается новый модуль, так как рабочий узел не имеет изображения SHA-1234, он начнет новую загрузку из docker.hub, и он будетget SHA-5678.

Это нарушает так называемое «известное хорошее изображение», и даже хуже, потому что работают две разные версии изображения.Я совершенно сбит с толку по этому поводу, кто-нибудь может дать дальнейшие объяснения о том, как работает Openshift ImageStream?

Ссылка:

https://blog.openshift.com/image-streams-faq/

https://docs.openshift.com/container-platform/3.9/architecture/core_concepts/builds_and_image_streams.html#image-streams

1 Ответ

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

Я получаю доступ к реестру по умолчанию, используя this .Я сканирую папку с изображениями, мои изображения действительно не там.Но затем я извлекаю изображения в своем главном узле с помощью

docker pull docker-registry.default.svc:5000/NAMESPACE/REPO:TAG

, и я могу успешно вытянуть изображения.После этого я снова помещаю тот же образ в тот же реестр docker-registry.default.svc:5000.Затем в пути к реестру /registry/docker/registry/v2 мое изображение показывается там.

Это очень странное явление, у меня работает только один реестр, но, похоже, он обрабатывает расположение изображений по-разному.

В итоге, кстати, Openshift действительно где-то кеширует конкретное изображение, так что даже фактический образ удаленного докера (в концентраторе док-станции) изменяется, он всегда будет использовать заведомо исправную версию в кэше.

...