Невозможно добавить A-запись в CoreDNS на кластере K3S

Вопрос или проблема

Я запускаю 1 мастер-узел и 2 рабочих узла на VirtualBox с Vagrant, и у меня есть несколько других ВМ, которые выполняют различные утилиты, такие как сервер Git. Я хочу дать своим подам доступ к серверу Git, но не могу сделать это с помощью CoreDNS. Поскольку я использую K3S, я следовал этому руководству и руководству от Microsoft. Вкратце, они используют ConfigMap coredns-custom и настраивают необходимый плагин для хостов.
coredns-custom.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: coredns-custom
namespace: kube-system
data:
default.server: |
gitea.local {
hosts {
192.168.56.41 gitea.local
fallthrough
}
}

vagrant@control1:~$ kubectl run -it –rm –restart=Never –image=infoblox/dnstools:latest dnstools
Если вы не видите приглашение командной строки, попробуйте нажать Enter.
dnstools# nslookup gitea.local
;; время ожидания подключения истекло; сервера не могут быть достигнуты

Соединение между ВМ само по себе в порядке
vagrant@control1:~$ ping gitea.local
PING gitea.local (192.168.56.41) 56(84) байт данных.
64 байт от gitea.local (192.168.56.41): icmp_seq=1 ttl=64 время=0.793 мс
64 байт от gitea.local (192.168.56.41): icmp_seq=2 ttl=64 время=0.302 мс
^C
— статистика ping gitea.local —
2 пакета отправлено, 2 получено, 0% потеря пакетов, время 1028мс
rtt min/avg/max/mdev = 0.302/0.547/0.793/0.245 м

Меня беспокоит то, что .server не работает, а .override выдает ошибку, так как я не могу определить 2 плагина для хостов.

Ответ или решение

Для решения проблемы с добавлением A-записи в CoreDNS на вашем кластере K3S, следует учесть несколько факторов, связанных с конфигурацией и особенностями работы CoreDNS.

Шаг 1: Проверьте существующую конфигурацию CoreDNS

Сначала убедитесь, что текущая конфигурация CoreDNS корректна. Для этого выполните:

kubectl -n kube-system get configmap coredns -o yaml

Обратите внимание на текущее содержимое сервера CoreDNS и проверьте, что ваш coredns-custom не затеняет основную конфигурацию.

Шаг 2: Создайте и примените корректный ConfigMap

Вам нужно использовать правильный формат для вашего coredns-custom.yaml. Вот пример, который может помочь:

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns-custom
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health
        kubernetes cluster.local in-addr.arpa ip6.arpa {
            pods insecure
            fallthrough in-addr.arpa ip6.arpa
        }
        hosts {
            192.168.56.41 gitea.local
            fallthrough
        }
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }

Шаг 3: Примените конфигурацию

Примените свой ConfigMap:

kubectl apply -f coredns-custom.yaml

Шаг 4: Обновите CoreDNS

После изменения конфигурации вам нужно перезагрузить CoreDNS, чтобы применить изменения. Для этого выполните:

kubectl rollout restart deploy/coredns -n kube-system

Шаг 5: Проверьте работоспособность DNS

Теперь вы можете проверить, работает ли DNS, используя ваш dnstools:

kubectl run -it --rm --restart=Never --image=infoblox/dnstools:latest dnstools
dnstools# nslookup gitea.local

Шаг 6: Дополнительные проверки

Если все еще возникает проблема с разрешением имени, проверьте следующие моменты:

  1. Проверка журнала CoreDNS: Для получения дополнительной информации о возможных ошибках можно просмотреть логи CoreDNS:

    kubectl logs -l k8s-app=kube-dns -n kube-system
  2. Сеть: Убедитесь, что в сети нет проблем. Вы уже проверили связь через ping, что является хорошим знаком.

  3. Подсетевые правила: Убедитесь, что нет сетевых полисов, которые блокируют доступ к CoreDNS.

Если все шаги выполнены правильно, ваш CoreDNS должен успешно разрешать адрес gitea.local в 192.168.56.41. Если проблемы продолжаются, стоит проверить общие настройки сети и конфигурацию самого кластера K3S.

Оцените материал
Добавить комментарий

Капча загружается...