设置在Kubernetes中运行的容器的主机名

Der*_*yeo 25 docker kubernetes

我想在Kubernetes中运行的容器中设置主机名,但Kubernetes似乎覆盖了我在运行时设置的任何内容.

我已经尝试在Docker镜像中设置/ etc/hostname我正在使用Kubernetes,并且包含echo "host.example.com > /etc/hostname"在Dockerfile中的CMD中.

似乎有一个docker标志-h来设置主机名.有没有办法让我在复制控制器中指定应该使用特殊标志启动容器?

容器的Debian,如果有帮助的话.

edh*_*tig 28

我以前的回答是不正确的,用正确的信息编辑

该-h标志docker run在创建它会在容器中设置的主机名.

测试出来: docker run -h test.example.com -it ubuntu /bin/bash

但该docker start命令没有相同-h或--hostname参数.似乎无法更改现有容器的主机名,只能更改映像中的新主机名.

然而w/r/t Kubernetes:Github上有一个关于Kubernetes如何处理主机名的问题.Kubernetes似乎没有直接公开docker的主机名设置,但您可以通过您的pod名称来影响它

  • 事情在我的容器中的uid 0下运行,所以`sudo`不应该改变任何东西。无论我安装了sudo还是运行`sudo主机名-b webauth-kube.csh.rit.edu`。我收到错误“主机名:您必须是root用户才能再次更改主机名”。 (3认同)
  • 如果我尝试使用“主机名”命令,则会收到错误“主机名:您必须是root用户才能更改主机名”,即使它在容器中以uid 0运行。我也曾尝试修改`/ etc /主机名和/ etc / hosts如您所链接的页面所示,但是主机名仍然是Kubernetes设置的名称。我特别不能从页面运行`sudo service hostname restart`命令,但是有一个`/ etc / init.d / hostname.sh`。我不能使用`restart`,因为不支持`argument'restart'`,并且当我使用`start`时,会得到与“ hostname”命令相同的错误。 (2认同)