Контейнеры в Kubernetes: образы (images)

Обычно вы создаете свой Docker образ и помещаете его в реестр, прежде чем обращаться к нему в модуле (pod) Kubernetes.

Свойство image контейнера поддерживает тот же синтаксис, что и команда docker, включая частные реестры и теги.

Обновление образов

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

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

Обратите внимание, что согласно Best Practices конфигурации рекомендуется избегать использования тега :latest.

Создание мультиархитектурных образов с помощью манифестов

Docker CLI поддерживает команду docker manifest с такими подкомандами, как create, annotate и push. Эти команды могут быть использованы для создания и продвижения манифестов. Вы можете использовать docker manifest inspect для просмотра манифеста.

Смотрите Docker документацию о манифестах здесь.

Вот примеры того, как это используется в сборке Kubernetes: https://cs.k8s.io/?q=docker%20manifest%20(create%7Cpush%7Cannotate)&i=nope&files=&repos=

Эти команды основаны и реализованы исключительно на интерфейсе командной строки Docker. Вам нужно будет либо отредактировать $HOME/.docker/config.json и установить experimental key (экспериментальный ключ) в положение enabled (включено), либо вы можете просто установить переменную среды DOCKER_CLI_EXPERIMENTAL в состояние enabled (включено) при вызове команд консоли.

Примечание: используйте Docker 18.06 или выше, версии ниже, которые либо содержат ошибки, либо не поддерживают опцию экспериментальной командной строки.

Если у вас возникли проблемы с загрузкой устаревших манифестов, просто очистите старые манифесты в $HOME/.docker/manifest, чтобы начать заново.

Для Kubernetes обычно используются образы с суффиксом -$(ARCH). Для обратной совместимости, создайте старые образы с суффиксами. Идея состоит в том, чтобы сгенерировать, скажем, образ pause, который имеет манифест для всех arch, и сказать, что pause-amd64 обратно совместим для старых конфигураций или файлов YAML, которые могут иметь жестко закодировать образы с суффиксами.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Контроллеры в Kubernetes: DaemonSet

Контроллеры в Kubernetes: ReplicaSet

Контроллеры в Kubernetes: StatefulSet