Как установить STH в контейнер Kubernetes - PullRequest
2 голосов
/ 04 июня 2019

Я хочу установить mysql-connector == 2.1.6 в контейнер python. Один из способов написать эту команду в DockerFile

RUN pip install mysql-connector==2.1.6

И сделать изображения и использовать это изображение в kubernetes. Но я хочу запустить образы python и после этого установить mysql-connector == 2.1.6 Но после сбоя контейнера или перезагрузки я должен снова установить mysql-connector == 2.1.6. После долгих поисков я вижу cloud_provider , который устанавливает пакеты в работающий контейнер. Но это не объясняет, как это сделать. Теперь у меня есть kubernetes, и я хочу навсегда установить некоторые пакеты на работающий контейнер. Что мне делать?

Я знаю, что могу зафиксировать контейнер, но я не хочу его, потому что я не знаю, когда пользователь устанавливает пакеты.

Ответы [ 3 ]

0 голосов
/ 07 июня 2019

Рассматривали ли вы initContainers?

Начальные контейнеры всегда запускаются перед Контейнером приложений в модуле.Кроме того, все initContainers должны успешно завершить (может быть серия initContainers). Согласно документации :

Список контейнеров инициализации, принадлежащихpod. Init-контейнеры выполняются в порядке, предшествующем запуску контейнеров. Если какой-либо init-контейнер дает сбой, pod считается сбойным и обрабатывается в соответствии с его restartPolicy.

Через initContainers вы можетевключает в себя некоторый контент безопасности, который не должен быть в образе, он может содержать утилиты или сценарии (например, установка mysql-connector).

Подробнее о initContainers и примерах здесь .

0 голосов
/ 10 июня 2019

Похоже, вы пытаетесь использовать модули Kubernetes в качестве замены традиционных «виртуальных машин» или «VPS», где пользователь «входит» в модули и вручную запускает команды для установки их приложения.

Kubernetes не предназначен для использования таким образом . Он предназначен для лечения стручков как одноразовых. Он автоматически перезапускает модули в различных сценариях (отключение узла, исчерпание ресурсов узла и т. Д.). Когда модуль перезапускается, все «ручные изменения» теряются. Это по замыслу , вы не должны пытаться бороться с этим.

Вам необходимо создать полный, окончательный образ контейнера , включая Python, библиотеки и код приложения, в вашем Dockerfile, затем собрать его и передать в реестр, а затем запустить в Kubernetes. Вы никогда не должны вручную входить в контейнер.

Как-то так должно работать

FROM python:3.7

# Install any dependencies you need
RUN pip install mysql-connector==2.1.6

# Copy all the application source to the container.
COPY src/ /app

# Set the entrypoint to your main python file.
ENTRYPOINT ["/app/main.py"]
0 голосов
/ 04 июня 2019

Это жесткое и быстрое правило, что изменения в контейнере эфемерны. Если контейнер закрывается, они ушли. Возможно, вы можете попытаться поместить все файлы конфигурации в постоянное хранилище, но это будет кошмар. Короче говоря, если вы хотите, чтобы это продолжалось, вам нужно сделать его частью изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...