Возможно ли, чтобы в Kubernetes имя хоста Pod было именем хоста узла хостинга?

#docker #kubernetes

#docker #kubernetes

Вопрос:

Переходя от Docker к K8s, сегодня мы запускаем некоторые контейнеры с помощью: docker run —hostname %H …это приводит к тому, что контейнер получает имя хоста хост-машины как свое собственное, могу ли я иметь аналогичное поведение, запущенное в K8s? (имея имя хоста pod в качестве имени хоста узла)

Из того, что я видел до сих пор:

  1. spec.hostname, похоже, не поддерживает значения из переменных env.

  2. Использование 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

Однако, возможно, в вашем случае это не проблема.