Docker – Как Обновить Модули, Если Версия Не Изменилась?

  • Автор темы Cratos
  • Обновлено
  • 21, Oct 2024
  • #1

Во время разработки мы постоянно создаем образ Docker с одной и той же версией (скажем, 0.0.1-разработка), поскольку нет необходимости вносить изменения для каждого незначительного изменения. В конечном итоге мы сталкиваемся с добавлением дополнительных функций.

Мы обнаружили, что imagePullPolicy: Always doesn't force the updated container to be pulled from Dockerhub and run if the version in the image hasn't changed.

В развертывании мы имеем kubectl set image deployment/ourdeployment but this doens't seem to have any effect.

Есть ли способ добиться желаемого поведения, заключающегося в извлечении изображения, даже если версия не изменилась, каждый раз заменяя старые контейнеры?

#docker #kubernetes #развертывание

Cratos


Рег
16 May, 2009

Тем
73

Постов
199

Баллов
584
  • 25, Oct 2024
  • #2

Основная проблема здесь в том, что с точки зрения Kubernetes в вашем развертывании ничего не изменилось. Так что ничего не обновляется.

Лучшим решением здесь было бы добавить что-нибудь в тег изображения, например, короткий хэш git. Ваше обновление будет работать. Кроме того, если вы сделаете это таким образом, вы сможете повторно создавать свои развертывания.

Если вы действительно хотите оставить все как есть, вы можете добавить в развертывание некоторую другую информацию, которая меняется при каждом развертывании, но не используется, например аннотацию. Но я бы не рекомендовал этого, так как видел, что это приводит к странному поведению с старый капсулы не отключаются.

Кстати: imagePullPolicy is just evaluated, when there является измените свое развертывание. По сути, этот флаг говорит: если вы что-то развертываете (например, потому что есть новое развертывание), независимо от того, есть ли у вас образ уже локально, перезагрузите его из реестра.

 

Sherilyn


Рег
30 Jun, 2008

Тем
82

Постов
194

Баллов
664