Establecer el nombre de host para un contenedor que se ejecuta en Kubernetes


Quiero establecer el nombre de host en un contenedor que se ejecuta dentro de Kubernetes, pero Kubernetes parece estar sobreescribiendo lo que establezca en tiempo de ejecución.

He intentado tanto configurar /etc/hostname en la imagen de docker que estoy usando Kubernetes, como incluir echo "host.example.com > /etc/hostname" en el CMD en el archivo Dockerfile.

Parece haber un indicador docker -h para establecer el nombre de host. ¿Hay alguna forma de que especifique en mi controlador de replicación que debería iniciar el contenedor con un indicador especial?

El el contenedor es Debian, si ayuda.

Author: edhurtig, 2015-07-22

2 answers

Mi respuesta anterior era incorrecta, editada con información correcta

La bandera -h para docker run establecerá el nombre de host del contenedor cuando lo cree.

Pruébalo: docker run -h test.example.com -it ubuntu /bin/bash

El comando docker start no tiene el mismo argumento -h o --hostname. No parece posible cambiar el nombre de host de un contenedor existente, solo uno nuevo a partir de una imagen.

Sin embargo w/r / t Kubernetes: Hay un problema abierto en Github con respecto a cómo maneja Kubernetes nombres de host. No parece que Kubernetes exponga directamente la configuración del nombre de host de docker, pero es posible que pueda influir en él a través del nombre de su pod

 25
Author: edhurtig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-22 18:57:46

Encontré la respuesta para cambiar el nombre de host de docker después de que el contenedor se haya estado ejecutando o puedo decir al contenedor existente aquí hay algunos pasos

  1. Ejecutar

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

    La salida será un número

  2. Ejecute este comando para iniciar sesión en el contenedor

    nsenter --target 15580 --uts
    
  3. Ejecute este comando para cambiar el nombre de host

    hostname "node_js"
    

Ahora salga del contenedor y vuelva a iniciar sesión verá que el nombre de host ha sido cambiado.

 0
Author: user9395071,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-01 15:34:40