2015-10-14 5 views
0

Я пытаюсь запустить контейнер, запускающий его процесс, запустив несколько команд в качестве другого пользователя. Команды выполняются с использованием su. Сначала я подумал, что это проблема в бэкэнде хранилища, поскольку контейнер был создан на devicemapper, но работает на aufs, но контейнер запускается правильно, когда я использую запуск докеров. Я также подумал, что это проблема с привилегией контейнера, но я уже предпринял шаги, необходимые для запуска привилегированных контейнеров в моем кластере, а также добавил флаг privileged: true в мое определение ReplicationController. Любая помощь приветствуется.Не удается открыть сеанс при использовании su

Кубэ v1

Docker 1.7.0

Mesos 0.23.0

Edit: Таким образом, после некоторого поиска неисправностей, кажется, что моя проблема в том, что Kubernetes не устанавливает контейнер привилегированный правильно. Даже если у меня есть --allow привилегированного = истинный набор для моего apiserver и ниже фрагмент кода из моего ReplicationController:

spec: 
    containers: 
    - name: oracledb 
     image: bradams/devops:oracle-test 
     privileged: true 

Не уверен, что еще я должен делать здесь.

+0

Некоторые вопросы, которые могут помочь ответить на ваш вопрос: работает ли контейнер, как ожидается, если его начать напрямую с помощью докеров на одном из ваших узлов? Что делать, если вы запускаете Pod в интерактивном режиме с помощью этой команды: kubectl run -i -tty - sh; то можете ли вы ввести команды su и заставить их работать? –

+0

К первому пункту я пробовал это и да, он работает так, как ожидалось. Во-вторых, я дам это выстрел и отчитаюсь. – bradams

+0

Итак, второй вариант не работает. Оглядевшись, я подумал, что это может быть проблема с файловыми ограничениями, но изменение этого не повлияло. Я думаю, что, возможно, Kubernetes неправильно устанавливает контейнер как привилегированный. На данный момент я не могу придумать никакого другого ответа. – bradams

ответ

2

Правильный синтаксис:

spec: containers: - name: oracledb image: bradams/devops:oracle-test securityContext: privileged: true

Вы не хватает гнездования под securityContext:. Это изменилось между v1beta3 и v1, и здесь задокументировано: http://kubernetes.io/v1.0/docs/api.html#v1-conversion-tips-from-v1beta3

Если вы попытаетесь создать свой модуль с помощью kubectl create --validate=true ..., тогда я думаю, что эта проблема будет поймана с сообщением об ошибке.

+0

Спасибо за это. Я на самом деле просто обнаружил, что я запускаю неправильную версию двоичных файлов, поэтому после обновления и определения синтаксиса я смог пройти мимо этого. Проблема в том, что, хотя мой apirusver должен разрешать привилегированные контейнеры, когда Mesos планирует запуск задачи, а kubelet запускается на узле, он отказывается начинать с _-- allow-privileged = true_. В моем ведомом журнале Mesos я вижу, что он начинается с флага false. – bradams

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