it-swarm.com.ru

Установка имени хоста для контейнера, работающего в Kubernetes

Я хочу установить имя хоста в контейнере, работающем внутри Kubernetes, но Kubernetes, похоже, переопределяет все, что я установил во время выполнения.

Я попытался установить/etc/hostname в образе докера, который я использую в Kubernetes, и включить echo "Host.example.com > /etc/hostname" в CMD в Dockerfile.

Похоже, есть флаг Docker -h для установки имени хоста. Есть ли способ указать мне в моем контроллере репликации, что он должен запускать контейнер со специальным флагом?

Debian контейнера, если это поможет.

25
Derek Gonyeo

Мой предыдущий ответ был неверным, отредактирован с правильной информацией

Флаг -h для docker run установит имя хоста контейнера при его создании.

Проверьте это: docker run -h test.example.com -it ubuntu /bin/bash

Команда docker start не имеет такого же аргумента -h или --hostname. Кажется невозможным изменить имя хоста существующего контейнера, просто новое изображение.

Однако с Kubernetes: Существует открытый вопрос { проблема на Github относительно того, как Kubernetes обрабатывает имена хостов. Не похоже, что Kubernetes выставляет настройки имени хоста докера напрямую, но вы можете иметь возможность влиять на него через имя вашего модуля

27
edhurtig

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

  1. Бежать 

    docker inspect -f '{{ .State.Pid }}' <existing_docker_hostname>
    

    На выходе будет число <15580>

  2. Запустите эту команду для входа в контейнер 

    nsenter --target 15580 --uts
    
  3. Запустите эту команду, чтобы изменить имя хоста 

    hostname "node_js"
    

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

0
user9395071