2015-05-12 2 views
10

Каков предпочтительный способ обновления набора контейнеров (например, после внесения изменений в код &, отталкивающих базовое изображение докеров в докер-концентратор), управляемых контроллером репликации в кластере кубернетов?Как обновить набор стручков, работающих в кубернетах?

Я вижу 2 пути:

  1. Удаление & повторного создания контроллера репликации вручную
  2. Использование kubectl качению обновление

С качению обновление я должен измените имя контроллера репликации. Поскольку я храню определение контроллера репликации в YAML-файле и не генерирую его вручную, изменение файла для выталкивания обновления кода, похоже, приводит к вредным привычкам, таким как чередование между двумя именами контроллера репликации (например, controllerA и controllerB) избегайте конфликта имен.

Каков наилучший способ?

ответ

19

Вы должны использовать kubectl rolling-update. Недавно мы добавили функцию, чтобы выполнить «простое обновление обновления», которое будет обновлять изображение в контроллере репликации без его переименования. Это последний пример, показанный в kubectl help rolling-update выхода:

// Update the pods of frontend by just changing the image, and keeping the old name 
$ kubectl rolling-update frontend --image=image:v2 

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

+0

Когда вы говорите недавно, какой выпуск был включен? – Charlino

+1

Он включен в 0.16.1 и более новые версии kubectl. –

+0

Можно обновить только одно изображение в контейнере? –

Смежные вопросы