Обновление выпуска руля JupyterHub с новым образом докера, но старый образ используется? - PullRequest
0 голосов
/ 09 марта 2019

У меня есть сервер ноутбуков JupyterHub, и я работаю на управляемых kubernetes на aws (EKS).Мой репозиторий докера - AWS ECR.

Я итеративно разрабатываю свой образ докера для тестирования.

Мой рабочий процесс:

  1. Обновление образа докера
  2. Обновление тега образа докера в конфигурации выпуска руля config.yaml
  3. Обновление релиза руля helm upgrade jhub jupyterhub/jupyterhub --version=0.7.0 --values config.yaml
  4. Проверка изменений в образе докера

Однако старыйобраз докера все еще используется?

Как мне изменить рабочий процесс разработки, чтобы я мог просто обновить образ докера и протестировать?

Дополнительная информация:

Редактировать:

Выполнены дополнительные действия по устранению неполадок:

Попытка удаления релиза руля и повторная установка:

helm delete --purge jhub && helm upgrade --install jhub jupyterhub/jupyterhub --namespace jhub --version=0.7.0 --values config.yaml

Попытка удаления пространства имен выпуска и рулевого управления и переустановка:

helm delete --purge jhub && kubectl delete namespace jhub && helm upgrade --install jhub jupyterhub/jupyterhub --namespace jhub --version=0.7.0 --values config.yaml

Также попытались переопределить значение imagePullPolicy для Always (согласно предложению Мостафы в его ответе)

hub:
  imagePullPolicy: Always

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

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

kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}"

# output:
...
<AWS_ACCOUNT>.dkr.ecr.eu-west-1.amazonaws.com/<REPO>:NEW_TAG  # <-- not actually being used in jupyerhub
...

Редактировать (2): я проверил описание модуля и обнаружил странное сообщение о событии: я проверил одно из моих описаний модуля и увидел странное сообщение о событии

  Normal  Pulled                  32m   kubelet,  <<REDACTED>>  Container image "<AWS_ACCOUNT>.dkr.ecr.eu-west-1.amazonaws.com/<REPO>:NEW_TAG" already present on machine

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

1 Ответ

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

Образ докера может не обновляться из-за того, что для imagePullPolicy установлено значение IfNotPresent, что означает следующее в соответствии с документацией kubernetes :

Политика извлечения по умолчанию - IfNotPresentчто заставляет Kubelet пропускать вытягивание изображения, если оно уже существует.Если вы хотите всегда выполнять принудительное извлечение, вы можете выполнить одно из следующих действий:

  • установить для imagePullPolicy контейнера значение Always.
  • опустить imagePullPolicy и использовать: latest asтег для использования изображения.
  • опустите imagePullPolicy и тег для использования изображения.
  • включите AlwaysPullImages контроллер доступа

В вашем случае вы можете установить значение imagePullPolicy на Awlays внутри config.yaml при развертывании новой диаграммы, чтобы она вытягивала новейшее изображение докера вашего кода

# Add this in your config.yaml (check if hub: is already exist to avoid overriding it)
hub:
  imagePullPolicy: Always
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...