Как вытащить новый образ в kubernetes из докера-концентратора, не влияя на работающий модуль? - PullRequest
0 голосов
/ 25 марта 2019

Я настраиваю приложение в kubernetes и хочу перезапустить модуль, если новое изображение помещено в концентратор докеров. Я не могу перезапустить модуль, если новый образ помещается в реестр док-станции?

Я включил

"imagePullPolicy": "Всегда"

"TerminationGracePeriodSeconds": 30

в файле deploy.yaml

Как вытащить новое изображение в модуль без остановки существующего модуля?

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Даже в обычном Docker вы никогда не сможете обновить контейнер до более нового изображения, не удаляя и не воссоздавая его. Это также невозможно в Kubernetes: список containers в спецификации pod «не может быть добавлен или удален ... не может быть обновлен», что означает, что вы никогда не сможете изменить изображение на существующем Pod .

В Kubernetes рекомендуется всегда использовать явный тег версии (никогда не latest или что-либо подобное, которое может измениться) и управлять модулями с помощью развертываний. Когда у вас будет новая сборка, измените спецификацию развертывания, чтобы иметь новый тег. Kubernetes заметит, что новое развертывание отличается от старого, и будет по порядку:

  1. Запустите новый Pod с новым изображением;
  2. Подождите, пока пройдут проверки работоспособности; и
  3. Удалить старый Pod.

Это приводит к обновлению без простоев.

0 голосов
/ 25 марта 2019

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

Используйте развертывания для запуска ваших модулей.Запустите следующую команду, чтобы изменить образ:

kubectl set image deployment/DEPLOY_NAME container-name=image_path:version

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

...