Docker K8s оптимизируют изображения для сокращения времени загрузки - PullRequest
4 голосов
/ 10 февраля 2020

У нас есть много docker изображений, которые нам нужно загрузить на k8s, но это работает, однако, когда мы запускаем новый узел, этот процесс может занять много времени.

Мы пытаемся изменить изображения на используйте "многоэтапные" сборки, однако, тем не менее, этот процесс занимает много времени, и мы не увидели значительных изменений времени запуска на новом узле.

Теперь мы попробуем следующее: (однако мы не уверены, как большое влияние мы увидим ...)

  1. Попробуйте (столько, сколько мы можем) использовать одинаковые docker изображения from, пример всех изображения, которые используют alpine для использования точно такой же версии (3.11), а не некоторые из версий 3.10 и некоторые 3.10.1 и некоторые 3.11 et c, это предотвратит механизм повторного использования docker для слоев, которые уже обналичены ...

  2. Сократите номера слоев, объединяя команды RUN в одну вместо многих (нам нужно сделать это для многих файлов docker ... ), не уверен, как механизм docker поможет здесь в достижении наших целей

Весь этот процесс по изменению использования одной и той же версии и сокращению слоев может занять много времени, мы тратим время впустую или нет, или это что-то, что может сократить время загрузки? Есть ли другая идея, которая может помочь нам?

У нас есть много docker изображений на основе Golang, NodeJS, java и др. c.

1 Ответ

6 голосов
/ 10 февраля 2020

так что вы на правильном пути

  • используйте минимальный слой
  • используйте слои повторно
  • используйте то же самое из слоев тега для кэширования
  • используйте Альпийские или тонкие изображения
  • используйте многоэтапную сборку

Я думаю, вы не сможете уменьшить размер дальше. Просто попробуйте docker squa sh, но это не сильно поможет.

Так как вы можете быстрее загружать свои узлы?

  • возможно ли испечь изображение узла с необходимыми слоями изображения внутри него?
  • возможно ли настроить реестр docker рядом с вашими узлами? чтобы он быстрее извлекал образ без задержек в сети
  • Можно ли хранить библиотеки вне образа и монтировать библиотеки во время выполнения? (например, если ваш код nodejs code, держите npm вне контейнера и монтируйте каталог npms во время выполнения)
  • k8s может запускать образы, отличные от docker. как кри-о . возможно ли для вас создавать кри-образы? они легкие
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...