Kubernetes - Как отредактировать конфигурационную карту CoreDNS corefile?

У меня довольно стандартная установка Kubernetes, работающая как одноузловой кластер на Ubuntu. Я пытаюсь настроить CoreDNS для разрешения всех внутренних служб в моем кластере Kubernetes и НЕКОТОРЫХ внешних доменных имен. Пока что просто экспериментирую. Я начал с создания модуля busybox, как показано здесь: https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/

Все работает, как описано в руководстве, пока я не внесу изменения в основной файл. Я вижу несколько проблем:

  1. Я отредактировал основной файл по умолчанию, используя kubectl -n kube-system edit configmap coredns, и заменил .:53 на cluster.local:53. После ожидания все выглядит многообещающим. google.com разрешение начало давать сбой, а kubernetes.default.svc.cluster.local продолжало приносить успех. Однако kubernetes.default разрешение тоже начало глючить. Это почему? В модуле занятости /etc/resolv.conf все еще есть поиск для svc.cluster.local. Изменилось только corefile.
  2. Я попытался добавить дополнительный раздел / блок в основной файл (опять же, отредактировав карту конфигурации). Я добавил простой блок:

    .:53{
        log
    }
    

    Кажется, что corefile не компилируется или что-то в этом роде. Модули кажутся исправными и не сообщают об ошибках в журналы, но все запросы зависают и завершаются ошибкой.

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

Для прозрачности это мой новый corefile:

cluster.local:53 {
    errors
    log
    health
    kubernetes cluster.local in-addr.arpa ip6.arpa {
       pods insecure
       upstream
       fallthrough in-addr.arpa ip6.arpa
    }
    prometheus :9153
    forward . /etc/resolv.conf
    cache 30
    loop
    reload
    loadbalance
}

person A. Davidson    schedule 19.06.2019    source источник


Ответы (2)


Похоже, ваш Corefile каким-то образом был поврежден во время редактирования с помощью команды "kubectl edit ...". Возможно, это ошибка вашего текстового редактора по умолчанию, но это определенно верно.

Я бы порекомендовал вам заменить текущую конфигурационную карту следующей командой:

kubectl get -n kube-system cm/coredns --export -o yaml | kubectl replace -n kube-system -f coredns_cm.yaml

#coredns_cm.yaml
apiVersion: v1
data:
  Corefile: |
    cluster.local:53 {
        log
        errors
        health
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           upstream
           fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        proxy . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: coredns

person Nepomucen    schedule 03.07.2019
comment
К вашему сведению - в приведенном выше примере вам, возможно, придется использовать forward вместо proxy kubernetes.io/docs/tasks/administer-cluster/ - person Aaron Hoffman; 25.11.2020

$ kubectl -n kube-system edit configmaps coredns -o yaml

Затем используйте vi для редактирования и сохранения coredns configmap. После сохранения изменения будут применены.

person Tim C.    schedule 19.03.2021