Kubernetes theory
March 15, 2023
Image Pull Policy
Данная политика определяет поведение kubelet при создании/пересоздании пода. Будут выкачиваться каждый раз заново образы для контейнера или нет.
- Устанавливается для контейнера;
- Если не указывать специально, то в двух случаях из трёх используется политика Always.
2.1 Если специально не указывали imagePullPolicy и тег установлен в latest;
2.2 Если специально не указывали imagePullPolicy и тег не указывали вообще;
2.3 И только в одном случае используется политика IfNotPresent. Когда указывается имидж и тег, отличный от :latest.
- IfNotPresent. Имидж выкачивается только в том случае, если он не представлен в локальном хранилище.
- Always. Каждый раз при запуске контейнера kubelet запрашивает у Registry цифровую подпись(digest) имиджа. Если цифровая подпись у имиджа в Registry будет отличаться от той что закеширована локально, то будет скачан новый имидж. Если отличий нет, то будет использоваться образ из локального хранилища.
- Never. Kubelet, в этом случае, не делает попыток скачать имидж из репозитория. Если имидж представлен локально, то под стартанёт, если нет, то зафейлится.
Здесь стоит запомнить, что стоит избегать использование тега :latest у имиджа. Нужно указывать конкретную версию приложения. Это позволит избежать проблем связанных с поддержкой новых функций у приложения, которые могут поломать логику всего сервиса.
Чтобы убедиться точно в том, что используется конкретная версия можно использовать цифровую подпись. В этом случае вместо image: app:tag будет image: app:digest.
Полезные ссылки.
https://kubernetes.io/docs/concepts/containers/images/#updating-images
Ошибка с imagePullPolicy: https://teletype.in/@cameda2/RnCXnVzLyTw