web-dev-qa-db-fra.com

Définition du nom d'hôte pour un conteneur s'exécutant dans Kubernetes

Je souhaite définir le nom d'hôte dans un conteneur s'exécutant dans Kubernetes, mais Kubernetes semble remplacer tout ce que j'ai défini lors de l'exécution.

J'ai essayé à la fois de définir/etc/hostname dans l'image du menu fixe que Kubernetes utilise et d'inclure echo "Host.example.com > /etc/hostname" dans le CMD du fichier Docker.

Il semble y avoir un indicateur de menu fixe -h pour définir le nom d'hôte. Est-il possible pour moi de spécifier dans mon contrôleur de réplication qu'il doit démarrer le conteneur avec un indicateur spécial?

La Debian du conteneur, si cela peut aider.

25
Derek Gonyeo

Ma réponse précédente était incorrecte, modifiée avec les informations correctes

L'indicateur -h pour docker run définira le nom d'hôte du conteneur lors de sa création.

Testez-le: docker run -h test.example.com -it ubuntu /bin/bash

La commande docker start n'a pas le même argument -h ou --hostname. Il ne semble pas possible de changer le nom d'hôte d'un conteneur existant, mais simplement un nouveau à partir d'une image.

Cependant, Kubernetes: Il y a un problème sur Github ouvert concernant la façon dont Kubernetes traite les noms d'hôte. Il ne semble pas que Kubernetes expose directement le paramètre de nom d’hôte de docker, mais vous pouvez éventuellement l’influencer via le nom de votre pod.

27
edhurtig

J'ai trouvé la solution pour changer le nom d'hôte du docker après que le conteneur a été exécuté ou je peux dire au conteneur existant, voici quelques étapes 

  1. Courir 

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

    La sortie sera un nombre <15580>

  2. Exécutez cette commande pour vous connecter au conteneur. 

    nsenter --target 15580 --uts
    
  3. Exécutez cette commande pour changer le nom d'hôte 

    hostname "node_js"
    

maintenant, quittez le conteneur et connectez-vous à nouveau, vous verrez que le nom d'hôte a été modifié.

0
user9395071