Назад | Перейти на главную страницу

Coredns только разрешает адрес кластера для пространства имен по умолчанию

Резюме

Я могу разрешать только имена хостов из и для default пространство имен. Запросы от и для других пространств имен, например kube-system, вернуть NXDOMAIN из coredns. Требуется ли авторизация?

подробности

Я создал учебный кластер, следуя Kubernetes: трудный путь за исключением использования VirtualBox вместо GCP. Все остальное работает, кроме DNS-запросов в пространствах имен, отличных от заданных по умолчанию. Более конкретно:

Конфигурация

Я обновился до Coredns 1.12, потому что 1.2.2 не может решить что-либо примерно в 50% случаев. С 1,12 запросы разрешаются в 100% случаев (если в default пространство имен).

Мне пришлось отредактировать конфигурацию (в configmap), удалив плагины «loop» и «proxy» (заменить proxy на forward), чтобы заставить его работать. Моя конфигурация выглядит следующим образом:

    .:53 {
        forward . 192.168.99.254:53 # dnsmasq on host machine
        log
        errors
        health
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods insecure
          upstream
          fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        cache 30
        reload
        loadbalance

Исправление проблем

Следующий это руководство Я вижу:

Стручки работают нормально

$ kubectl get pods --namespace=kube-system -l k8s-app=kube-dns
NAME                       READY   STATUS    RESTARTS   AGE
coredns-6f8fb48d88-dz9cd   1/1     Running   0          14m
coredns-6f8fb48d88-s5rvp   1/1     Running   0          14m

Проверяя консоль, я вижу исправное ведение журнала

2019-05-24T04:41:13.990Z [INFO] plugin/reload: Running configuration MD5 = 7c717fabd578b2514cf60fee426fabc6
2019-05-24T04:41:13.992Z [INFO] CoreDNS-1.5.0
2019-05-24T04:41:13.992Z [INFO] linux/amd64, go1.12.2, e3f9a80

Сервис DNS доступен:

 $ kubectl get svc --namespace=kube-system
NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE
kube-dns         ClusterIP   10.32.0.10   <none>        53/UDP,53/TCP   18d

Конечные точки доступны:

$ kubectl get ep kube-dns --namespace=kube-system
NAME       ENDPOINTS                                                     AGE
kube-dns   10.200.21.33:53,10.200.22.17:53,10.200.21.33:53 + 1 more...   18d

Как упоминалось выше, DNS работает, но только из default пространство имен.

Похоже, что это была проблема с изображение busybox - если я использую общий Ubuntu, тогда записи разрешаются нормально, и службы, которым нужны записи, могут их получить. Например. metrics-server может разрешать узлы.