Kubernetes - Как редактировать конфигурационный файл CoreDNS corefile? - PullRequest
0 голосов
/ 20 июня 2019

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

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

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

    .:53{
        log
    }
    

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

Я пытался добавить плагин журнала, но это не работает, так как плагин применяется только к доменам, соответствующим плагину, и либо имя домена не совпадает, либо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
}

1 Ответ

1 голос
/ 03 июля 2019

Похоже, что ваш 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
...