#docker #kubernetes
#docker #kubernetes
Вопрос:
Переходя от Docker к K8s, сегодня мы запускаем некоторые контейнеры с помощью: docker run —hostname %H …это приводит к тому, что контейнер получает имя хоста хост-машины как свое собственное, могу ли я иметь аналогичное поведение, запущенное в K8s? (имея имя хоста pod в качестве имени хоста узла)
Из того, что я видел до сих пор:
-
spec.hostname, похоже, не поддерживает значения из переменных env.
-
Использование hostAliases, похоже, вводит жестко заданное имя…
Кстати, модули развертываются как набор деамонов
Комментарии:
1. Я бы посоветовал вам прочитать о наборах состояния, в которых вы можете указать префикс, который вы хотели бы, чтобы модули имели. Этому, конечно, будет предшествовать порядковый номер, который присваивает машина.
2. @RaunakJhawar Спасибо! но сейчас это выполняется как DeamonSet (поскольку мне нужно, чтобы он запускался постоянно и по одному экземпляру на узел), если можно сохранить DeamonSet, то лучше всего.
Ответ №1:
Если вы используете hostNetwork: true
для спецификации pod, он будет совместно использовать сеть с узлом. Вот простой тест:
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
hostNetwork: true
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "sh", "-c"]
args:
- while true; do
echo -en 'n';
printenv HOSTNAME
sleep 10;
done;
restartPolicy: Never
Это показывает, что имя хоста модуля совпадает с именем его узла.
Обратите внимание, однако, что эта настройка является общей, не рекомендуется:
Избегайте использования
hostNetwork
по тем же причинам, что иhostPort
Однако, возможно, в вашем случае это не проблема.