Что определяет имя хоста узла при добавлении нового узла с помощью microk8s?

Я создаю кластер машин, на которых установлена ​​одна и та же настройка:

  • Сервер Ubuntu 20.04.2
  • во время установки я выбираю уникальное короткое имя хоста
  • когда ОС установлена, я добавляюmicrok8s 1.20/stableс помощью Snap и добавьте разрешения, следуя этому руководству.

Я решил отключить HA, запустивmicrok8s disable ha-clusterпосле установки.

я бегуmicrok8s add-nodeна главной и первых двух машинах успешно соединяются, создавая кластер с тремя узлами, один из которых является главным.

Проблема возникает с 4-й машиной. Несмотря на то, что kubelet подключается нормально, он не использует «красивое» имя хоста, как определено в/etc/hostnameно внутренний IP моей машины. Все работает нормально, но в результате получается противоречивый и некрасивый список узлов.

Бегmicrok8s.kubectl edit nodeна мастере я выбираю проблемную машину по ip192.168.0.134(имя хоста) и одна из машин, которая подключилась к его имени хоста, как и предполагалось (rhombus):

      - apiVersion: v1
  kind: Node
  metadata:
    annotations:
      node.alpha.kubernetes.io/ttl: "0"
      volumes.kubernetes.io/controller-managed-attach-detach: "true"
    creationTimestamp: "2021-04-04T18:08:15Z"
    labels:
      beta.kubernetes.io/arch: amd64
      beta.kubernetes.io/os: linux
      kubernetes.io/arch: amd64
      kubernetes.io/hostname: 192.168.0.134
      kubernetes.io/os: linux
      microk8s.io/cluster: "true"
    name: 192.168.0.134
    resourceVersion: "27486"
    selfLink: /api/v1/nodes/192.168.0.134
    uid: 09c01d87-1ae4-452f-8908-6dcb85a5999a
  spec: {}
  status:
    addresses:
    - address: 192.168.0.134
      type: InternalIP
    - address: 192.168.0.134
      type: Hostname

  ...

- apiVersion: v1
  kind: Node
  metadata:
    annotations:
      node.alpha.kubernetes.io/ttl: "0"
      volumes.kubernetes.io/controller-managed-attach-detach: "true"
    creationTimestamp: "2021-04-04T13:59:21Z"
    labels:
      beta.kubernetes.io/arch: amd64
      beta.kubernetes.io/os: linux
      kubernetes.io/arch: amd64
      kubernetes.io/hostname: rhombus
      kubernetes.io/os: linux
      microk8s.io/cluster: "true"
    name: rhombus
    resourceVersion: "27244"
    selfLink: /api/v1/nodes/rhombus
    uid: f125573a-0efb-444c-849b-f0521fe3b813
  spec: {}
  status:
    addresses:
    - address: 192.168.0.105
      type: InternalIP
    - address: rhombus
      type: Hostname

Я считаю, что--hostname-overrideаргумент вызывает эту головную боль:

      $ sudo grep -rlw "192.168.0.134" /var/snap/microk8s/2094/args
/var/snap/microk8s/2094/args/kube-proxy
/var/snap/microk8s/2094/args/kubelet
/var/snap/microk8s/2094/args/kubelet.backup
      $ cat /var/snap/microk8s/2094/kubelet

...

--cluster-domain=cluster.local
--cluster-dns=10.152.183.10
--hostname-override 192.168.0.134

Если я сравниваю файл с таким же файлом на машинах без этой проблемы, последняя строка будет лишней. То же самое касается/var/snap/microk8s/current/..., я не знаю, в чем разница между ними.

Если я попытаюсь удалить эту строку или изменить IP-адрес наzebra, настройки игнорируются и перезаписываются (каким-то образом). Сделать это было предложено в ответе на соответствующий вопрос здесь . Другие ответы предлагают сброс, я используюmicrok8s resetчтобы никакой разницы. Чтобы проверить каждый шаг на этом пути, я запускаю те же команды на одной из машин, которые подключаются со своим «красивым» именем хоста. В конце концов, он всегда сохранял «красивое» имя хоста.

Что мне следует изменить перед подключением узла к другому, чтобы отображалось правильное имя? Почему одни и те же шаги установки на разных машинах приводят к разному имени узла?

РЕДАКТИРОВАТЬ: Я переустановил ОС на машине, но проблема осталась.


ОБНОВЛЯТЬ:

Я забыл добавить имя хоста последнего узла в главный файл:

      $ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 masterhost
192.168.0.x nodehost1
192.168.0.y nodehost2 
192.168.0.z nodehost3                  <--- missing 

Теперь все использует имя хоста, а не IP. Я до сих пор не понимаю, почему запись в/etc/hostsменяет поведение.

0 ответов

Другие вопросы по тегам