У меня довольно стандартная установка Kubernetes, работающая как кластер с одним узлом в Ubuntu. Я пытаюсь настроить CoreDNS для разрешения всех внутренних служб в моем кластере Kubernetes и НЕКОТОРЫХ внешних доменных имен. Пока что я только экспериментировал. Я начал с создания модуля busybox, как показано здесь: https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/.
Все работает так, как описано в руководстве, пока я не внесу изменения в corefile. Я вижу пару проблем:
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
. Все, что изменилось, это основной файл.Я попытался добавить дополнительную строфу/блок в основной файл (опять же, отредактировав карту конфигурации). Я добавил простой блок:
.: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
}
Похоже, ваш 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
$ 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
К сведению: в приведенном выше примере вам, возможно, придется использовать
forward
вместоproxy
kubernetes.io/docs/tasks/administer-cluster/….