2017-01-19 12 views
3

Я очень новичок в Kubernetes и используя k8s v1.4, Minikube v0.15.0 и Spotify maven Docker.
Процесс сборки моего проекта создает изображение Docker и направляет его прямо в движок Docker Minikube.Обновить изображение развертывания в Kubernetes

Контейнеры создаются с помощью развертывания, которое я создал (с использованием набора реплик), и стратегия была установлена ​​на type: RollingUpdate.

Я видел это в документации:

Примечания: откачка при развертывании в срабатывает, если и только если шаблон стручка развертывания (в том .spec.template) изменяется.


Я ищу простой способ/обходной путь для автоматизации потока: Сложение срабатывает> новый Докер изображение выталкивается (withoud версия меняется)> Развертывание обновит стручок> служба выставит новый стручок ,

+0

Если вы не меняя изображение на всех, то нет никакого способа, чтобы гарантировать, что вы получите новый образ в каждом поддоне, если вы установите 'ImagePullPolicy: Всегда 'и убивать каждый блок и развертывать его воссоздайте. Однако, если вы каждый раз создаете новое изображение докеров, имеет смысл также обновить тег. –

+0

@AnirudhRamanathan Поскольку я не создаю «новое» изображение каждый раз, просто обновляя изображение, я пойду с первым подходом, так что есть способ убить старые контейнеры автоматически? –

+0

'ImagePullPolicy: Always' не работает с локальными изображениями, поэтому между тем я вручную удаляю контейнеры с конкретным lable, тогда набор реплик создает их с обновленным изображением. интересно, есть ли способ сделать это автоматически. –

ответ

3

когда не изменяя имя изображения контейнера или тег вы просто масштабировать приложение к 0 и обратно к первоначальному размеру с СТГ, как:

kubectl scale --replicas=0 deployment application 
kubectl scale --replicas=1 deployment application 

Как уже упоминалось в комментариях уже ImagePullPolicy: Always затем требуется в вашей конфигурации.

При изменении изображения я нашел, что это самый прямой способ обновить

kubectl set image deployment/application app-container=$IMAGE 

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


Редактировать: небольшая бонуса - сохранение масштаба в синхронизации до и после может выглядеть так. как:

replica_spec=$(kubectl get deployment/applicatiom -o jsonpath='{.spec.replicas}') 
kubectl scale --replicas=0 deployment application 
kubectl scale --replicas=$replica_spec deployment application 

Приветствия

+0

есть способ сделать то же самое с API Kubernetes? –

+0

Еще раз приветствую - см .: http://stackoverflow.com/questions/41792851/manage-replicas-count-for-deployment-using-kubernetes-api/41795286#41795286 – pagid

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