У меня есть простой контейнер в Google Container Engine, который работает в течение нескольких месяцев без проблем. Внезапно я не могу разрешить ЛЮБОЙ внешний домен. При устранении неполадок я повторно создал контейнер много раз и обновил версию кластера до 1.4.7 в попытке решить без изменений.Внешнее разрешение DNS перестало работать в контейнеровозе
Чтобы исключить код приложения, как много, насколько это возможно, даже базовый код Node.js не может разрешить внешний домен:
const dns = require('dns');
dns.lookup('nodejs.org', function(err, addresses, family) {
console.log('addresses:', addresses);
});
/* logs 'undefined' */
То же побежал на локальной машине или местных докеров контейнерных работ, как ожидалось.
Это kubectl вызов не выполняется, а также:
# kubectl exec -ti busybox -- nslookup kubernetes.default
nslookup: can't resolve 'kubernetes.default'
Два появляются при получении Кубэ-Dns стручки (правда, не уверен, что, как ожидается)
# kubectl get pods --namespace=kube-system -l k8s-app=kube-dns
NAME READY STATUS RESTARTS AGE
kube-dns-v20-v8pd6 3/3 Running 0 1h
kube-dns-v20-vtz4o 3/3 Running 0 1h
Оба говорят это при попытке проверить для ошибок в DNS-модуле:
# kubectl logs --namespace=kube-system pod/kube-dns-v20-v8pd6 -c kube-dns
Error from server: container kube-dns is not valid for pod kube-dns-v20-v8pd6
Я ожидаю, что внутренне созданные kube-dns не будут правильно вытягивание внешних результатов DNS или некоторая другая связь исчезла.
Я приму практически любое обходное решение, если оно существует, поскольку это производственное приложение - возможно, можно вручную установить серверы имен в файле YAML контроллера Kubernetes или в другом месте. Установка содержимого файла /etc/resolv.conf в файле Docker не работает.