2015-07-22 55 views
24

我想在Kubernetes內運行的容器中設置主機名,但Kubernetes似乎覆蓋了我在運行時設置的任何內容。設置在Kubernetes中運行的容器的主機名

我已經嘗試在docker映像中設置/ etc/hostname,我正在使用Kubernetes,並且在Dockerfile的CMD中包含echo "host.example.com > /etc/hostname"

似乎有一個碼頭標誌-h來設置主機名。有沒有辦法讓我在我的複製控制器中指定它應該用特殊標誌啓動容器?

容器的Debian,如果有幫助。

回答

25

我以前的答案是不正確的,具有正確的信息

當你創建它的-h標誌docker run將設置容器的主機名編輯。

測試出來:docker run -h test.example.com -it ubuntu /bin/bash

docker start命令不具有相同的-h--hostname說法雖然。似乎不可能更改現有容器的主機名,只是從圖像中更換一個新的容器。

但是w/r/t Kubernetes:關於Kubernetes如何處理主機名,有一個開放的issue on Github。它似乎並不像Kubernetes直接公開docker的主機名,但是你可能能夠通過你的pod名稱來影響它。

+1

如果我嘗試使用'hostname'命令,我得到錯誤'hostname:你必須是root才能更改主機名「,即使這是在一個容器它運行爲uid 0我試圖修改'/ etc/hostname'和'/ etc/hosts'作爲你鏈接的頁面建議,但主機名仍然是它的被Kubernetes設置。我特別不能從頁面運行'sudo service hostname restart'命令,但是有'/etc/init.d/hostname.sh'。我不能使用'restart',因爲'argument'restart'not supported',並且當我使用'start'時,我得到與'hostname'命令相同的錯誤。 –

+0

您將需要在hostname命令前面使用sudo。即使容器本身在主機的進程樹上以'uid:0'運行,容器中的服務也擁有自己的用戶空間(至少我是這麼想的)。 'sudo hostname host.example.com'工作嗎? – edhurtig

+1

事情在我的容器中運行在uid 0下,所以'sudo'不應該改變任何東西。無論我安裝了sudo,並運行'sudo hostname -b webauth-kube.csh.rit.edu'。我得到錯誤'主機名:你必須是root才能再次更改主機名'。 –

相關問題