kubernetes dns resolver в nginx

Я разрабатывал локально в docker-compose , и у меня был контейнер nginx, выполняющий простой proxy_pass так:

location /app/ {
    proxy_pass http://webapp:3000/;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;

    resolver 127.0.0.11;
}

Теперь я хочу перейти на kubernetes в GKE, и последняя строка вызывает у меня проблемы.

Я попытался переключить преобразователь на:

    resolver kube-dns;

Я также пробовал другие IP-адреса и имена, но продолжаю получать ошибку примерно следующего содержания:

nginx: [emerg] host not found in resolver "kube-dns"

Моя установка Kubernetes такова, что у меня есть один модуль с двумя контейнерами: «webapp» и «nginx». Я просто хочу иметь внешнюю службу , указывающую на nginx, которая может proxy_pass в webapp.

Есть идеи?

7
задан 30 September 2017 в 23:36
3 ответа

Если nginx живет внутри кубернетов, нет необходимости устанавливать резолвер, так как он определится в правильное место. если nginx и webapp живут в одном пространстве имен, вы можете просто

proxy_pass http://webapp

, пока ваше имя службы для webapp называется webapp и использует порт 80.

Если nginx живет снаружи вы должны использовать входной контроль или установить службу для веб-приложения на nodeport. Nodeport откроет один и тот же порт на всех узлах, чтобы вы могли балансировать нагрузку между ними на стороне nginx.

1
ответ дан 2 December 2019 в 23:35

Вы должны указать FQDN для kube-dns и служб.
. Например, для стандарта GKE kube-dns: kube-dns.kube-system.svc.cluster.local
И если вы находитесь в пространстве имен по умолчанию с вашим webapp сервисом, то это будет: kube-dns.kube-system.svc.local
: webapp.default.svc.cluster.local

Я знаю, что исходный вопрос старый, но, возможно, это кому-то поможет.

7
ответ дан 2 December 2019 в 23:35

Достигнуто это при локальном запуске кластера с использованием Kind с помощью следующих шагов:

1. Проверка конфигурации DNS работающего модуля

kubectl exec -it <имя модуля> -- cat /etc/resolv.conf

search default.svc.cluster.local svc.cluster.local cluster.local home
nameserver 10.96.0.10
options ndots:5

2. Указание IP-адреса сервера имен в качестве преобразователя Nginx

http {
    server {
        resolver 10.96.0.10 valid=10s;
0
ответ дан 30 August 2021 в 22:09

Теги

Похожие вопросы