Как добавить изображение в кубернетес, которое уже кешируется? - PullRequest
0 голосов
/ 27 октября 2019

Я использую кластер kubernetes с 20 рабочим узлом. Я установил политику извлечения изображений как IfNotPresent, чтобы сократить время создания. Изображение размещено на dockerhub.

Когда я обновляю изображение в dockerhub, мне нужно очистить кэш от всех 20 рабочих узлов. В настоящее время я выполняю вытягивание докера на всех 20 рабочих узлах для обновления последнего образа.

Есть ли какое-либо нативное решение kubernetes или любое другое лучшее отраслевое решение для обновления образа на всех узлах?

Ответы [ 3 ]

0 голосов
/ 28 октября 2019

Зависит от версии вашего изображения в Docker Hub.

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

  • откат быстрее в случаепроблемы, потому что вы просто измените номер версии на предыдущий

  • все ваши модули будут использовать одну и ту же версию изображения

Вы можете прочитатьо конфигурации изображений-контейнеров в документации Kubernetes.

imagePullPolicy и тег изображения влияют, когда kubelet пытаетсяпотянуть указанное изображение.

  • imagePullPolicy: IfNotPresent: изображение извлекается, только если оно не присутствует локально.

  • imagePullPolicy: Always:изображение извлекается при каждом запуске модуля.

  • imagePullPolicy опускается, а тег изображения :latest или опускается: Always применяется.

  • imagePullPolicy опущен и тег изображения присутствует, но отсутствует :latest: IfNotPresent естьприменяется.

  • imagePullPolicy: Never: предполагается, что изображение существует локально. Не делается попытка вытянуть изображение.

Примечание: Чтобы убедиться, что контейнер всегда использует одну и ту же версию изображения, вы можете указать его дайджест , например sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2. Дайджест однозначно идентифицирует конкретную версию образа, поэтому он не обновляется Kubernetes, если вы не измените значение дайджеста.

Примечание: При развертывании следует избегать использования тега :latestконтейнеры в производстве, так как сложнее отследить, какая версия образа запущена, и сложнее правильно выполнить откат.

Примечание: Семантика кэширования основного поставщика изображений обеспечивает равномерность imagePullPolicy: Always эффективный. Например, в Docker, если изображение уже существует, попытка извлечения выполняется быстро, поскольку все слои изображения кэшируются и загрузка изображения не требуется.

0 голосов
/ 01 ноября 2019

лучшее отраслевое решение - использовать уникальный тег для каждого развернутого образа. измените тег изображения, и k8s выполнит обновление для вас. Эта проблема возникает только потому, что вы хотите использовать один и тот же тег, даже если изображение меняется. Какой бы ни была причина, по которой вы думаете, что не стоит явно создавать версии вашего изображения, вы ошибаетесь: P. Явные версии хорошо работают, если их указать

0 голосов
/ 27 октября 2019

вам нужно использовать Всегда в ImagePullPolicy. Если это так, то при каждом изменении в хэше коммита с определенным тегом K8S будет тянуть снова. Не забудьте также установить rollUpdate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...