Грязный обходной путь (не проверено): вы можете уменьшить rc до 0, а затем до исходного размера => это будет перезапуск «pod». Или вы можете использовать 2 активных (размер не 0)/пассивный (размер 0) rc, которые будут включены в один и тот же сервис. И вы будете масштабировать их вверх/вниз.
Пометка означает сложный сценарий, который всегда удаляет старые изображения с тегами (бесполезно, у кого-то есть хитрость).
Тегирование — хороший явный процесс. сборка мусора Kubernetes автоматически удалит ваши старые изображения. Надеюсь, вы знаете, что если вы используете только последний тег, то откат может быть невозможен. Рекомендую настроить систему тегов, например :latest_stable, :latest_dev, :2nd_latest_stable, ...
.
Эти теги будут только «указателями», и ваш CI будет их перемещать. Затем вы можете определить и написать сценарий некоторой интеллектуальной политики удаления тегов реестра, например. все теги старше 2nd_latest stable
можно безопасно удалить. Вы знаете свое приложение, поэтому можете настроить политику, которая будет соответствовать вашим потребностям и политике выпуска.
Пример тега — начальная точка сборки 1/2/3 (идентификатор сборки, идентификатор git, время сборки, ...) — сборка 1 — это :production
и :canary
, все теги проталкиваются:
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
image 3 a21348af4283 37 seconds ago 125.1 MB
image 2 7dda7c549d2d 50 seconds ago 125.1 MB
image production e53856d910b8 58 seconds ago 125.1 MB
image canary e53856d910b8 58 seconds ago 125.1 MB
image 1 e53856d910b8 58 seconds ago 125.1 MB
Сборка 2 будет :canary
:
# docker tag -f image:2 image:canary
# docker push image:canary
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
image 3 a21348af4283 6 minutes ago 125.1 MB
image canary 7dda7c549d2d 6 minutes ago 125.1 MB
image 2 7dda7c549d2d 6 minutes ago 125.1 MB
image production e53856d910b8 7 minutes ago 125.1 MB
image 1 e53856d910b8 7 minutes ago 125.1 MB
Тесты в норме, сборка 2 стабильна - будет :production
:
# docker tag -f image:2 image:production
# docker push image:production
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
image 3 a21348af4283 9 minutes ago 125.1 MB
image 2 7dda7c549d2d 9 minutes ago 125.1 MB
image canary 7dda7c549d2d 9 minutes ago 125.1 MB
image production 7dda7c549d2d 9 minutes ago 125.1 MB
image 1 e53856d910b8 10 minutes ago 125.1 MB
Домашнее задание: на самом деле сборка 2 нестабильна -> установить :production
для сборки 1 (откат) и :canary
для сборки 3 (тестовое исправление в сборке 3). Если вы используете только :latest
, этот откат невозможен
kubectl
непрерывное обновление/откат будет использовать явный :id
, а ваш сценарий очистки может использовать политику: все теги старше :production
могут быть удалены.
К сожалению, у меня нет опыта развертывания Kubernetes.
person
Jan Garaj
schedule
20.02.2016