Ошибка открытия терминала: неизвестно. (kubectl exe c pod -it bash) - PullRequest
1 голос
/ 19 апреля 2020

Использование Ubuntu 19.10 с использованием стандартного терминала GNOME.

Я создал docker образ с nvm , используя следующий файл dockerfile (это будет команда npm диагностики / отладки) контейнер строки, поэтому не приложение):

FROM ubuntu:19.10

RUN rm /bin/sh && ln -s /bin/bash /bin/sh

RUN apt-get update && \
    apt-get -y dist-upgrade && \
    apt-get -y autoremove && \
    apt-get clean

RUN apt-get install -y \
    curl \
    nano \
    git 

ARG NODE_VERSION='12.0.0'
ARG NVM_DIR=/root
ARG NVM_VERSION='v0.35.3'

RUN curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/$NVM_VERSION/install.sh" | bash \
    && source $NVM_DIR/nvm.sh \
    && nvm install $NODE_VERSION

Я собрал образ, поместил его в реестр изображений и запустил в k8s. Я получил доступ к работающему контейнеру с:

kubectl exec my-app-xx25 -it bash

Но когда внутри контейнера я не могу запустить, например, nano:

root@my-app-xx25:/# nano
Error opening terminal: unknown.

или сбросить терминал для этого:

root@my-app-xx25:/# reset
reset: unknown terminal type unknown

vi / vim работает, хотя.

На основе:

https://github.com/moby/moby/issues/9299

Если я делаю :

kubectl exec my-app-xx25 -it -- bash -c "export TERM=xterm && bash"

Я могу нормально запустить nano, но это выглядит как грязный обходной путь.

Обратите внимание, если я запускаю его локально с docker, он работает нормально (запуск nano, reset et c):

docker run -it my-image /bin/bash

Любые предложения о том, что происходит и почему мне нужно передать export TERM=xterm при запуске kubectl exec, а не при docker run (локально)?

1 Ответ

1 голос
/ 20 апреля 2020

Странно, что вы запускаете nano внутри контейнера / контейнера Kubernetes. Учитывая, что ваш kubectl exec ... не является root оболочкой для входа в систему, для обхода этой проблемы необходимо ввести значение в ваш /root/.bashrc:

export TERM = xterm

Я бы порекомендовал вам собрать Контейнер со встроенным файлом, если вы собираетесь запускать его на регулярной основе, потому что если это не так, то каждый раз при перезапуске вашего контейнера или контейнера вам придется вручную изменять содержимое /.bashrd.

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