Кластер KubeADM: как правильно настроить DNS

У меня есть следующий проект, который я использую для создания собственного кластера Kubernetes на локальном компьютере (macOS) через KubeAdm: https://github.com/sasadangelo/k8s-cluster По сути, я начал с этого проекта и сделал следующее обновление:

  • Настройте развертывание Vagrant с помощью файл YAML.
  • Поддержка API-интерфейсов K8s 1.6, K8s 1.18 и Calico 3.8.8
  • Автоматическое развертывание информационной панели K8s.

Теперь меня устраивает этот кластер, но у меня есть некоторые проблемы с DNS, которые я хотел бы понять, как решить. Инструмент использует файл Vagrant для запуска 3 ящиков Vagrant, тогда я использую в основном 3 сценария:

  • configure_box.sh , я использую для установки на каждый ящик необходимое программное обеспечение, такое как docker, kubeadm, kubelet, kubectl и т. Д.
  • configure_master.sh , используется для настройки только главного узла, установки сетевого плагина и запуска kubeadm init .
  • configure_worker.sh , используется для настройки рабочего узла, присоединяющегося к кластеру.

Моя проблема в том, что resolv.conf моих модулей выглядит так:

nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local <other domain coming from host machine>
options ndots:5

Этот файл имеет две проблемы:

  1. не позволяет мне получить доступ к Интернету. Фактически, я должен добавить вручную добавить эту строку в начало файла:
nameserver 8.8.8.8

и удалить ее, когда она больше не нужна (если я оставлю ее, внутренний DNS не работает)

  1. в предложении поиска там - это домены, поступающие с моих хост-компьютеров: <другой домен, исходящий с хост-машины> , которые вызывают проблемы.

Я прочитал много документации, но все еще не понимаю, как изменить свой код, чтобы избежать этих двух проблем.

0
задан 21 July 2021 в 19:09
1 ответ
  1. не позволяет мне получить доступ к Интернету.

Ваша конфигурация по умолчанию кажется нормальной. Как вы обнаружили, вам не стоит изменять ваш pod resolv.conf, поскольку он должен использовать службу coredns в кластере для локального поиска dns. Служба coredns должна быть способна перенаправлять dns-запросы на resolver, настроенный в вашем k8s-master /etc/resolv.conf. Похоже, что это может быть проблема с доступом в интернет сервера k8s-master или с сетью virtualbox. Я клонировал ваш репозиторий и смог разрешить интернет dns от pods, запущенных на кластере, как и ожидалось.

Если вы посмотрите на конфигурацию coredns, то увидите, что она настроена на использование /etc/resolv.conf для любых неопределенных доменов. С k8s-master вы можете выполнить kubectl -n kube-system get configmap coredns -o yaml, чтобы увидеть конфигурацию coredns. Там будет строка, forward . /etc/resolv.conf. В документации kubernetes здесь объясняется конфигурация corefile coredns. Вы также увидите, что resolve.conf в coredns pod такой же, как на хосте. Чтобы проверить это, вы можете выполнить ps -aux | grep coredns, чтобы получить pid одного из процессов coredns. Затем выполните nsenter -t -n cat /etc/resolv.conf и вы должны увидеть, что содержимое совпадает с содержимым хост-системы. В нем должен быть резольвер из сети virtualbox. Вы можете проверить этот резольвер с хоста или в процессе coredns, чтобы убедиться, что он может разрешать dns. Вы также можете протестировать резольвер google из процесса coredns и посмотреть, что получится. Я бы попробовал выполнить поиск dns, а также просто выполнить ping. Это поможет вам определить причину проблемы. Опять же, я попробовал ваш vagrantfile на совершенно новом сервере ubuntu 20.04, и он отлично работает.

  1. в пункте поиска есть домены, приходящие с моих хост-машин, которые вызывают проблемы.

Это также ожидаемая конфигурация. Обычно я не ожидал, что это вызовет проблемы, но я не знаю вашей точной конфигурации или того, чего вы пытаетесь достичь. Если решение требует, чтобы вы изменили список поисковых доменов в стручке, то это можно сделать в pod dns policy. Надеюсь, решение первой проблемы позволит вам избежать необходимости настраивать это.

2
ответ дан 28 July 2021 в 13:56

Теги

Похожие вопросы