Kubernetes — Как отредактировать конфигурацию файла ядра CoreDNS?

У меня довольно стандартная установка 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 тоже начало давать сбои. Почему это? Для svc.cluster.local все еще есть запись поиск для /etc/resolv.conf в модуле Busybody kubectl -n kube-system edit configmap coredns. Все, что изменилось, это основной файл.
  2. Я попытался добавить дополнительную строфу/блок в основной файл (опять же, отредактировав карту конфигурации). Я добавил простой блок:

    .:53{
        log
    }
    

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

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

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

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
}
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
6
0
10 681
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

К сведению: в приведенном выше примере вам, возможно, придется использовать forward вместо proxykubernetes.io/docs/tasks/administer-cluster/….

Aaron Hoffman 25.11.2020 21:19
$ kubectl -n kube-system edit configmaps coredns -o yaml

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

kubectl get -n kube-system configmaps coredns -o yaml > core_dns.yaml
kubectl replace -n kube-system -f core_dns.yaml

Другие вопросы по теме