Назад | Перейти на главную страницу

преобразователь DNS Kubernetes в 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». Я просто хочу иметь внешний service указывая на nginx, который может proxy_pass в webapp.

Любые идеи?

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

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

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

proxy_pass http://webapp

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

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