Как правило, Kubernetes запускает только программное обеспечение, упакованное в Docker изображения. Kubernetes никогда не будет запускать вещи из вашей локальной системы. В вашем примере кластер создаст новый неизмененный контейнер busybox
, затем из каталога root этого контейнера попытайтесь запустить sh -c ../run.sh
; так как этот скрипт не является частью стандартного busybox
образа, он не запустится.
Наилучший подход здесь состоит в том, чтобы создать изображение из вашего скрипта и поместить sh в Docker реестр. Это стандартный способ запуска любого пользовательского программного обеспечения в Kubernetes, поэтому у вас, вероятно, уже есть рабочий процесс для его выполнения. (Для настройки теста в Minikube вы можете указать свой локальный Docker на среду Minikube и создать локальный образ, но это не масштабируется для объектов, размещенных в облаке или иным образом работающих в среде с несколькими хостами.)
В принципе, вы можете загрузить сценарий в конфигурационной карте в отдельном файле шаблона Helm, смонтировать его в задание c и запустить его (вам может понадобиться явно sh run.sh
обойти проблемы с разрешениями файлов). В зависимости от вашей среды это может работать так же хорошо, как и собственно изображение, но если вам нужно обновлять и повторно развертывать диаграмму Хелма каждый раз, когда изменяется скрипт, «более нормально» выполнять ту же работу, собирая и загружая вашу систему CI. новый образ (и он будет таким же, как и для развертываний вашего приложения).