2016-03-21 2 views
0

Я создал /usr/startup.sh скрипт в контейнере google, который хотел бы выполнить его при запуске каждого контейнера.скрипт запуска контейнера google

Я попробовал это, выполнив команду в ямле, как показано ниже.

Команда: "ш /usr/start.sh" Команда: [ "ш", "-c", "/usr/start.sh"]

Пожалуйста, дайте мне, если есть какой-либо вид способ, который может выполнить определенный скрипт при запуске в контейнере/контейнере google.

ответ

2

Возможно, вы захотите посмотреть postStart lifecycle hook.

Пример можно найти в kubernetes repo:

containers: 
    - name: nginx 
    image: resouer/myapp:v6 
    lifecycle: 
     postStart: 
     exec: 
      command: 
      - "cp" 
      - "/app/myapp.war /work" 

Вот в :

// Lifecycle describes actions that the management system should take in response to container lifecycle 
// events. For the PostStart and PreStop lifecycle handlers, management of the container blocks 
// until the action is complete, unless the container process fails, in which case the handler is aborted. 
type Lifecycle struct { 
    // PostStart is called immediately after a container is created. If the handler fails, the container 
    // is terminated and restarted. 
    PostStart *Handler `json:"postStart,omitempty"` 
    // PreStop is called immediately before a container is terminated. The reason for termination is 
    // passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. 
    PreStop *Handler `json:"preStop,omitempty"` 
} 
+0

Похоже, что он не работает для ReplicationController. Он работает с стручком. Pod находится в статусе «RunContainerError». Пожалуйста, дайте мне знать, если я что-то отсутствую apiVersion: v1 вида: ReplicationController метаданных: пространство имен по умолчанию имени: testtomcat спецификации: реплик: 2 селектор: приложение: testtomcat шаблон: метаданные: метки: приложение: testtomcat спецификации: контейнеры: - название: testtomcat изображение: gcr.io/project/tomcat-:v4 жизненный цикл: postStart: Exec: команда: - «/usr/start.sh» ports: - containerPort: 8080 – Nitin

+0

Пробовал это, как и следовать, и теперь он отлично работает. жизненный цикл: postStart: Exec: команда: - "ш" - "/usr/local/s3fsmount.sh" Спасибо за помощь! – Nitin

0

скрипты запуска запуска при запуске узла, а не для каждого стручка. В настоящее время у нас нет «крюка» в kubelet для запуска всякий раз, когда на узле начинается пакет. Можете ли вы объяснить, что вы пытаетесь сделать?

+0

Использование вида: ReplicationController в yaml Я пытаюсь установить хранилище google в Pod. Устанавливали необходимые пакеты на Docker Image и тестировали их в Google Container Engine. Ручная установка работает нормально, но не может автоматизировать ее. Пробовал использовать сценарий оболочки с параметром команды в файле yaml. Попробовал добавить «my-bucket/mount/point gcsfuse rw, auto, user» в/etc/fstab, но он не работает. необходимо выполнить команду «mount/mount/point» каждый раз в контейнере. Я хотел бы выполнить команду «gcsfuse --implicit-dirs my-bucket/mount/point» или «mount/mount/point» при запуске модуля. – Nitin

+0

Пробовал это, как и следовать, и теперь он работает нормально. жизненный цикл: postStart: Exec: команда: - "ш" - "/usr/local/s3fsmount.sh" Спасибо за помощь! – Nitin

Смежные вопросы